Repository navigation
ci: isolate release artifact validation from dirty worktrees - #538
Merged
codeforester merged 1 commit intoOct 5, 2026
Conversation
6 tasks done
codeforester
commented
Oct 5, 2026
codeforester
left a comment
Collaborator
Author
There was a problem hiding this comment.
Reviewed against issue #537 and current head f913333. Release-artifact tests now build from a clean per-test local clone, while the dirty-source rejection remains covered; the Bash 4.2 smoke path uses the same clean-source boundary. Hosted checks are green (11 pass, 0 fail, 0 pending), and GitHub reports MERGEABLE/CLEAN with no conflicts. No blocking findings in this review. Issue #537 remains open; this PR is ready to merge once the maintainer chooses to do so.
codeforester
deleted the
ci/537-20261001-ci-isolate-release-artifact-tests-from-dirty-worktrees
branch
October 5, 2026 09:18
codeforester
added a commit
that referenced
this pull request
Oct 5, 2026
## Summary Make the aggregate validation gate deterministic when launched from an interactive terminal. The BATS stage now receives `/dev/null` as stdin, while tests that need a TTY continue to allocate one explicitly through their PTY helpers. ## Issue Fixes #536 ## Validation - `bats tests/validate-driver.bats </dev/null` — 2/2 passed. - ShellCheck and `git diff --check` passed. - `./tests/validate.sh </dev/null` — 700 BATS tests and all subsequent validation stages passed. ## Demo Impact None. ## Docs Impact None. ## API Impact None. ## CI Impact The canonical BATS invocation no longer inherits a maintainer terminal. This prevents timeout supervision and unavailable-terminal assertions from changing outcome based on how validation was launched. ## Security Notes None. The timeout supervisor continues to fail closed for direct foreground-TTY use. ## Notes This PR is intentionally based on #538 (`ci/537-20261001-ci-isolate-release-artifact-tests-from-dirty-worktrees`) so the aggregate gate is validated with both fixes. Retarget to `main` after #538 lands. ## Checklist - [x] Branch name follows `<category>/<issue>-<YYYYMMDD>-<slug>` for tracked work. - [x] Pull request is scoped to one issue. - [x] Pull request body explains what changed and how it was validated. - [x] Documentation and public API are unaffected. - [x] Release and security contracts remain enforced. - [x] Pull request includes `Fixes #536`.
3 tasks
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
Make release-artifact validation hermetic when the repository under test contains unrelated local edits. Build fixtures now use a clean per-test local clone through
BASE_BASH_RELEASE_SOURCE_ROOT; the Bash 4.2 release smoke uses the same clean-source path.Issue
Fixes #537
Validation
bats tests/release-artifact.bats </dev/null— 14/14 passed.tests/bash-42-release-smoke.sh— passed on Bash 5.3.20../tests/validate.sh </dev/null— 699 BATS tests and all subsequent validation stages passed.git diff --checkpassed.Demo Impact
None.
Docs Impact
None.
API Impact
None.
CI Impact
Release-artifact tests and the minimum-Bash release smoke no longer depend on the validator checkout being clean. The production clean-source guard remains enforced and has explicit dirty-source coverage.
Security Notes
No release provenance or clean-checkout policy was relaxed. Test artifacts are built from clean local clones and remain commit-bound.
Notes
This is intentionally independent from #536, which makes the aggregate BATS invocation non-terminal-safe.
Checklist
<category>/<issue>-<YYYYMMDD>-<slug>for tracked work.Fixes #537.