Skip to content

ci: isolate release artifact validation from dirty worktrees - #538

Merged
codeforester merged 1 commit into
mainfrom
ci/537-20261001-ci-isolate-release-artifact-tests-from-dirty-worktrees
Oct 5, 2026
Merged

codeforester merged 1 commit into
mainfrom
ci/537-20261001-ci-isolate-release-artifact-tests-from-dirty-worktrees

Conversation

@codeforester

Copy link
Copy Markdown
Collaborator

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.
  • ShellCheck and git diff --check passed.

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

  • Branch name follows <category>/<issue>-<YYYYMMDD>-<slug> for tracked work.
  • Pull request is scoped to one issue.
  • Pull request body explains what changed and how it was validated.
  • Documentation and public API are unaffected.
  • Release and security contracts remain enforced.
  • Pull request includes Fixes #537.

@codeforester codeforester left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
codeforester merged commit 0ae85aa into main Oct 5, 2026
11 checks passed
@codeforester
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`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci: isolate release-artifact tests from dirty worktrees

1 participant