Skip to content

Commit 58a3a8d

Browse files
committed
docs: update RELEASE.md with complete 12-step checklist
- Add changelog update, pre-commit, test, build verification steps - Add package content verification (check wheel includes all packages) - Add local install refresh and stale package detection - Remove empty root aur file
1 parent c178676 commit 58a3a8d

2 files changed

Lines changed: 120 additions & 25 deletions

File tree

aur

Whitespace-only changes.

docs/04-process/RELEASE.md

Lines changed: 120 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -68,52 +68,147 @@ Releases a specific version to PyPI.
6868

6969
**Use when:** You're ready to publish a new version to PyPI immediately.
7070

71-
## Pre-Release Checklist
71+
## Complete Release Checklist
7272

73-
Before releasing, ensure quality by running local CI checks:
73+
Follow these steps in order. **Never skip pre-commit hooks.**
7474

7575
**For configurator/template changes:** See `TOOLS_CONFIG_GUIDE.md` § Release Checklist for additional checks specific to slash command configurators and tool integrations.
7676

77-
### 1. Quick Health Check (30 seconds)
77+
### 1. Update CHANGELOG.md
78+
79+
Add entries for all changes since the last release under a new version heading:
80+
81+
```markdown
82+
## [0.X.Y] - YYYY-MM-DD
83+
84+
### Added
85+
- New features...
86+
87+
### Fixed
88+
- Bug fixes...
89+
90+
### Changed
91+
- Other changes...
92+
```
93+
94+
### 2. Bump Version
95+
7896
```bash
79-
./scripts/quick-check.sh
97+
./scripts/bump-version.sh 0.X.Y
8098
```
8199

82-
This runs the test suite quickly to catch obvious issues.
100+
This updates `pyproject.toml` and `packages/cli/src/aurora_cli/main.py`.
101+
102+
### 3. Run Pre-Commit Hooks (NEVER SKIP)
103+
104+
Stage all changes and run pre-commit. Fix any failures iteratively:
83105

84-
### 2. Full CI Check (3-5 minutes) - **REQUIRED BEFORE RELEASE**
85106
```bash
86-
./scripts/run-local-ci.sh
107+
git add -A
108+
pre-commit run --all-files
87109
```
88110

89-
This runs:
90-
- All tests (same as GitHub CI)
91-
- Pre-commit hooks (formatting, linting, security)
92-
- Coverage reporting
111+
If hooks modify files (black, isort), re-stage and re-run until all pass.
93112

94-
**Release Criteria:**
95-
- ✅ All tests passing
96-
- ✅ No security issues (bandit)
97-
- ✅ Code properly formatted (black, isort)
98-
- ✅ Test coverage meets standards
113+
### 4. Run Tests
99114

100-
### 3. Then Release
101115
```bash
102-
./scripts/release.sh <version>
116+
make test
103117
```
104118

105-
**Typical pre-release workflow:**
119+
All tests must pass. Do not release with failures.
120+
121+
### 5. Commit
122+
106123
```bash
107-
# 1. Run full local CI
108-
./scripts/run-local-ci.sh
124+
git commit -m "chore: release v0.X.Y"
125+
```
109126

110-
# 2. If all checks pass, release
111-
./scripts/release.sh 0.5.1
127+
Pre-commit hooks run again during commit — this is expected and must pass.
128+
129+
### 6. Build Distribution
130+
131+
```bash
132+
rm -rf dist/ build/ src/*.egg-info
133+
python3 -m build
134+
```
135+
136+
### 7. Verify Build Contents
137+
138+
Check that the wheel includes all expected packages before uploading:
139+
140+
```bash
141+
python3 -m zipfile -l dist/aurora_actr-*.whl | grep -E '/__init__\.py$' | sort
142+
```
143+
144+
Expected packages: `aurora_cli`, `aurora_core`, `aurora_context_code`, `aurora_context_doc`, `aurora_lsp`, `aurora_reasoning`, `aurora_soar`, `aurora_spawner`, `aurora_testing`, `implement`, `aurora_mcp`.
145+
146+
If a package is missing, check the symlinks in `src/` and `pyproject.toml` `[tool.setuptools.packages.find]`.
147+
148+
### 8. Upload to PyPI
149+
150+
```bash
151+
export TWINE_USERNAME=__token__
152+
export TWINE_PASSWORD=$(pass amr/pypi_api)
153+
python3 -m twine upload dist/*
154+
```
155+
156+
### 9. Refresh Local Install and Verify
112157

113-
# 3. Verify on PyPI
114-
pip install --upgrade aurora-actr
158+
```bash
159+
pip install -e .
160+
```
161+
162+
Verify the correct version is active and source paths point to the repo (not stale site-packages):
163+
164+
```bash
165+
aur --version
166+
python3 -c "import aurora_core; print(aurora_core.__file__)"
167+
# Should show: /path/to/aurora/src/aurora_core/__init__.py (NOT site-packages)
168+
```
169+
170+
If you see a `site-packages` path, the editable install is being shadowed by a stale non-editable install:
171+
172+
```bash
173+
pip uninstall aurora-actr && pip install -e .
174+
```
175+
176+
### 10. Tag and Push
177+
178+
```bash
179+
git tag v0.X.Y
180+
git push origin main --tags
115181
```
116182

183+
### 11. Monitor CI
184+
185+
```bash
186+
gh run list --limit 1
187+
gh run watch # Wait for completion
188+
```
189+
190+
CI must be green. If it fails, investigate and fix immediately — do not leave main broken.
191+
192+
### 12. Verify on PyPI
193+
194+
```bash
195+
pip install --upgrade aurora-actr # From a clean venv if possible
196+
```
197+
198+
Visit: `https://pypi.org/project/aurora-actr/0.X.Y/`
199+
200+
---
201+
202+
**Alternative: One-Command Release** (if all pre-checks already pass)
203+
204+
`release.sh` combines steps 2, 6, 5, 8 into one command. Only use it after steps 1, 3, 4 are already done:
205+
206+
```bash
207+
./scripts/release.sh 0.X.Y
208+
```
209+
210+
Note: `release.sh` uses `git add -A` — ensure no unwanted files are in the working tree.
211+
117212
## Version Strategy
118213

119214
[Semantic Versioning](https://semver.org/):

0 commit comments

Comments
 (0)