Conversation
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.
Summary
actions/checkoutofj7an/shared-workflowsfromdependency-cooldown.yml— the root cause of v2.0.2 scan job fails on every consumer PR —Checkout shared-workflows scriptsstep resolvesgithub.workflow_shato caller context #29 (caller-context${{ github.workflow_sha }}resolved to the consumer's PR merge SHA, which doesn't exist inshared-workflows)scripts/extract-deps.shandscripts/check-release-age.shas subshell functions in the workflow body, preserving the subprocess scope semantics via paren function syntax (fn() ( ... )) so the standaloneset -e[uo] pipefailoptions stay containedSet initial statusruns immediately afterHarden runner, before any fallible step. Adds a 6-line gate-discipline policy comment abovejobs.scan.stepscodifying the invariant for future authorsscripts/check-inline-sync.shand a newinline-syncCI job inci-scripts.ymlthat enforces byte-for-byte parity between the inline copies and the standalone scripts on every PR — any future drift fails CI loudlycheck_release_agecall site documenting that command-substitution invocation is load-bearing for per-row error tolerance (a refactor to a direct call would silently kill the step on the first 404/parse failure)Test plan
bats tests/extract-deps.bats tests/check-release-age.bats— green (8/8)./scripts/check-inline-sync.sh— green (both inline copies match standalone byte-for-byte)python3 -c 'yaml.safe_load(...)'on both touched workflow files — greengrep -nE '(shared-workflows/scripts|github\.workflow_sha|j7an/shared-workflows)' .github/workflows/dependency-cooldown.yml— zero matchesScript Tests / bats— greenScript Tests / inline-sync— greenDependency Cool-Down / cooldown / scan(self-consumption viaci-cooldown.yml) — greendependency-cooldown / gate = successwith description `Non-bot PR — no cool-down required`dependabot[bot]-author PR on the same consumer pinned at this PR's head SHA reaches `success` or `pending`, never `error`, with the inlined functions visibly executing in the scan logsWhy cross-repo validation is non-negotiable
Per #29's post-mortem, the self-consumption caller at `.github/workflows/ci-cooldown.yml` uses a local-path `uses: ./...` reference, which makes the caller repo the same as the checkout target repo and masks caller-context bugs by structural coincidence. PR #28 went green here on shared-workflows CI and still shipped broken to every cross-repo consumer. This PR's CI passing is necessary but not sufficient — the cross-repo checkbox above is the actual proof. Companion smoke-test infrastructure to close this gap is tracked in #30.
Post-merge operator checklist
This repo's release pipeline is intentionally not auto-reactive on merge:
If step 4 reveals a regression, the rollback is: `git tag -d v2.0.3 && git push --delete origin v2.0.3`, then revert the merge commit on `main` via a new revert PR (do not force-push). Detail in the spec at `docs/superpowers/specs/2026-04-12-issue-29-v2.0.3-emergency-fix-design.md` section 9.
Out of scope (tracked in #30)
Companion durability work that explicitly does NOT belong in this emergency fix:
These three layers of defense compose to make #29's bug class structurally impossible to reintroduce. v2.0.3 ships the immediate fix; #30 ships the durability infrastructure as a follow-up.
Pre-existing findings surfaced by parallel review (NOT blocking)
Four parallel pr-reviewer agents (security, correctness, CI/release, consumer-compat) reviewed this branch and surfaced several Info/Low findings that pre-date this PR and are explicitly not introduced by it:
None of these block the v2.0.3 release. They are candidate hardening for a separate follow-up PR or for #30.
Fixes #29.