-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
Error Description
The release.sh --execute command enters an infinite hang or silent exit during the validation step, leaving uncommitted version changes that cause the script to fail on subsequent runs.
Command Used
./release/release.sh --executeSteps to Reproduce
- Run
./release/release.sh --prepare --beta --summary release/AI_RELEASE_SUMMARY.md(succeeds) - Run
./release/release.sh --execute - Script updates version files (ai_todo/init.py, legacy/todo.ai, pyproject.toml, uv.lock)
- Script reaches "🔍 Validating generated files..." step
- Script silently exits or hangs indefinitely
- Version files remain uncommitted
- Re-running
--executefails pre-flight check: "Uncommitted changes detected"
Expected Behavior
The script should:
- Update version files
- Run pre-commit validation
- Handle validation results (pass/fail/auto-fix)
- Commit version changes
- Create git tag
- Push to origin
- Create GitHub release
Actual Behavior
The script:
- ✅ Updates version files successfully
- ❌ Hangs/exits during validation step
- ❌ Leaves files uncommitted
- ❌ Never reaches commit stage
Output:
🔍 Validating generated files...
Checking: release/RELEASE_NOTES.md release/RELEASE_SUMMARY.md legacy/todo.ai pyproject.toml ai_todo/__init__.py
[HANGS HERE - no further output]
Root Cause Analysis
The validation code at lines ~1973-2035 in release/release.sh:
- Runs
uv run pre-commit run --files ...and captures output - This command appears to hang or exit silently
- The script never proceeds to the commit stage
- When manually running the same pre-commit command, it succeeds immediately
Evidence:
# Manual validation succeeds quickly
$ uv run pre-commit run --files release/RELEASE_NOTES.md release/RELEASE_SUMMARY.md legacy/todo.ai pyproject.toml ai_todo/__init__.py
trim trailing whitespace.................................................Passed
fix end of files.........................................................Passed
[... all checks pass in ~6 seconds ...]Workaround
Manual execution of remaining steps:
# Commit version changes
git add legacy/todo.ai pyproject.toml ai_todo/__init__.py release/RELEASE_SUMMARY.md release/RELEASE_NOTES.md uv.lock
git commit --no-verify -m "chore: Bump version to 4.0.0b3"
# Create and push tag
git tag -a v4.0.0b3 -m "Release v4.0.0b3"
git push origin main
git push origin v4.0.0b3
# Create GitHub release
gh release create v4.0.0b3 --title "Release v4.0.0b3" --notes-file release/RELEASE_NOTES.md --prereleaseImpact
- Severity: High (blocks automated releases)
- Scope: Developer workflow only
- Frequency: Every release attempt
Environment
- OS: macOS 25.2.0 (darwin)
- Shell: zsh
- Version: 4.0.0b3
- Python: 3.14
- uv: Latest
Additional Context
This issue occurred during the v4.0.0b3 release preparation (AIT-14). The pre-flight validation passes, but the script fails during the file validation step after updating versions.
The validation code uses command substitution:
validation_output=$(uv run pre-commit run --files "${files_to_validate[@]}" 2>&1)
local validation_status=$?Possible issues:
- Command substitution may be causing buffering/blocking behavior
- Pre-commit hooks might be waiting for input or producing streaming output that blocks
- The script timeout/exit handling may be incorrect
Suggested Fix
Investigate the validation command execution:
- Add timeout to pre-commit execution
- Use alternative output capture method (redirect to file instead of command substitution)
- Add debug logging to identify where execution stops
- Consider running validation in background with monitoring
Reactions are currently unavailable