Generate machine-readable release manifest#106
Conversation
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdds a deterministic release-manifest generator and tests, commits release-artifacts/latest/release-manifest.json with checksum integration, and wires generation/check into Makefile, check scripts, CI, tests, and documentation/gating. ChangesRelease Manifest Feature
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
🧹 Nitpick comments (1)
scripts/test_release_manifest.py (1)
22-26: 💤 Low valueConsider adding
ensure_ascii=Falsefor consistency.The test helper
write_jsonomitsensure_ascii=False, which the generator includes. While this doesn't affect current ASCII-only test data, adding it would make the helper match the generator's behavior exactly.♻️ Optional consistency improvement
def write_json(path: Path, value: object) -> None: path.parent.mkdir(parents=True, exist_ok=True) with path.open("w", encoding="utf-8", newline="\n") as handle: - json.dump(value, handle, indent=2) + json.dump(value, handle, indent=2, ensure_ascii=False) handle.write("\n")🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/test_release_manifest.py` around lines 22 - 26, The write_json helper currently calls json.dump(value, handle, indent=2) which omits ensure_ascii and therefore differs from the generator; update the write_json function to pass ensure_ascii=False to json.dump (i.e., json.dump(value, handle, indent=2, ensure_ascii=False)) so the helper matches the generator's behavior while preserving the existing newline write and file creation in write_json.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@scripts/test_release_manifest.py`:
- Around line 22-26: The write_json helper currently calls json.dump(value,
handle, indent=2) which omits ensure_ascii and therefore differs from the
generator; update the write_json function to pass ensure_ascii=False to
json.dump (i.e., json.dump(value, handle, indent=2, ensure_ascii=False)) so the
helper matches the generator's behavior while preserving the existing newline
write and file creation in write_json.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 1b82c286-7101-49ba-b62b-dc418eb30efc
📒 Files selected for processing (21)
.github/workflows/ci.ymlCHANGELOG.mdMakefileREADME.mddocs/deployment.mddocs/release-policy.mddocs/status.mddocs/tooling.mdops/AUTONOMOUS_RUN.mdops/ROADMAP.mdrelease-artifacts/README.mdrelease-artifacts/latest/SHA256SUMSrelease-artifacts/latest/release-checksums.jsonrelease-artifacts/latest/release-manifest.jsonscripts/check.ps1scripts/check.shscripts/generate_release_artifacts.pyscripts/generate_release_manifest.pyscripts/test_release_artifacts.pyscripts/test_release_checksums.pyscripts/test_release_manifest.py
Summary
Closes #105.
Adds a deterministic Gate G release manifest at
release-artifacts/latest/release-manifest.jsonand wires it into local and CI checks before the release checksum bundle.What Changed
scripts/generate_release_manifest.pyand focused stdlib tests.release-artifacts/latest/release-manifest.jsonfrom committed release artifacts, ABI compatibility baseline, deployment configs/manifests, address books, schemas, changelog, and governance docs.release-manifest.jsonis included inSHA256SUMSandrelease-checksums.json.not_available_self_referentialinstead of embedding an impossible hash cycle.Makefile,scripts/check.sh,scripts/check.ps1, and CI.release-artifacts/latest/.Validation
python scripts\test_release_manifest.pypython scripts\generate_release_manifest.py --checkpython scripts\test_release_checksums.pypython scripts\generate_release_checksums.py --checkpython scripts\test_release_artifacts.pypython scripts\generate_release_artifacts.py --checkpython scripts\test_changelog_check.pypython scripts\check_changelog.pypython -m py_compile scripts\generate_release_artifacts.py scripts\test_release_artifacts.py scripts\generate_release_manifest.py scripts\test_release_manifest.py scripts\generate_release_checksums.py scripts\test_release_checksums.py scripts\check_changelog.py scripts\test_changelog_check.pybash -n scripts/check.shscripts/check.ps1andscripts/bootstrap-windows.ps1git diff --checkmake checkpowershell -ExecutionPolicy Bypass -File scripts\check.ps1Summary by CodeRabbit
New Features
Documentation
Chores
Tests