Recommendation
Adopt a repository-owned release command modeled on the release process proven in projectious-work/aibox. The goal is a repeatable, resumable release ritual that validates the exact candidate, publishes complete artifacts and documentation, and leaves authoritative post-publication evidence.
Reference process to replicate
1. Version-line authority
- Maintain a development branch and a protected release-integration branch for each supported version line.
- Derive the required release branch from the requested semantic version; reject releases from any other branch.
- Require PR-based promotion into protected branches. Never force-push a release branch.
- Tag only the designated release-integration branch, then merge tagged history into
main through a PR.
2. Phase 0: state and doctor reports
Before version/tag mutation:
- Generate a release-state report covering pinned dependencies, tool/runtime versions, release assets, and other floating inputs.
- Run project and runtime doctors into a durable report.
- Block on every error. Surface warnings and actionable information for explicit resolution or a linked tracked deferral.
Suggested outputs:
dist/RELEASE-STATE.md
dist/RELEASE-DOCTORS.md
3. Candidate-bound validation
After version metadata is correct, bind validation to:
- exact candidate commit SHA;
- requested version;
- clean/dirty tree state;
- toolchain fingerprint;
- environment-specific scope where relevant.
Run independent gates with bounded concurrency and separate logs. Reuse evidence only when every binding still matches. Typical gates:
- format/lint/type checks;
- unit and integration tests;
- real E2E/runtime tests;
- dependency and supply-chain audit;
- release artifact builds;
- native binary/version smoke;
- project-specific readiness/evidence gates.
Store local evidence under a candidate-specific directory such as dist/release-evidence/vX.Y.Z/<commit>/.
4. Documentation gate before publication
Make documentation validation mandatory whenever tag or release publication is selected:
- require tracked
release-notes/vX.Y.Z.md;
- require compatibility/support metadata for the version;
- verify root README and contributor/maintenance guidance;
- build the complete documentation site with production settings;
- fail before tagging if any required surface is missing or the docs build fails.
Deploy documentation only after the candidate passes this gate.
5. Publication
From the protected release branch:
- promote the validated candidate through a PR if necessary;
- prepare/reuse curated tracked release notes;
- create and push an annotated tag;
- create the GitHub release with all required archives, checksums, license, and correct prerelease/latest classification;
- deploy documentation;
- emit an explicit prompt/report for any host-only completion phase.
Do not create a bare GitHub release that omits artifacts.
6. Optional host-only phase
If some targets or containers require a separate host/runtime:
- sync the host checkout to the exact release branch and verify the tag is reachable from it;
- preserve dirty checkouts in named stashes before switching;
- build/upload host-specific artifacts;
- publish container images;
- run a downstream-style smoke against published artifacts;
- verify public manifests/assets and record timings.
7. Final verification
Verify the public release, expected assets/checksums, installer behavior, published packages/images if applicable, documentation URL, release-branch/tag ancestry, and final worktree state. A local green test run alone is not release completion.
Suggested interface
./scripts/maintain.sh release X.Y.Z
./scripts/maintain.sh release X.Y.Z --steps phase0
./scripts/maintain.sh release X.Y.Z --steps checks,build
./scripts/maintain.sh release-host X.Y.Z # only if host-only work exists
Equivalent naming is fine; one repository-owned entrypoint should orchestrate the ritual.
Acceptance criteria
Why this fits processkit
processkit already has strong schema, doctor, migration, and release-audit concepts. This process would make those checks part of a single executable publication contract and ensure its CLI/runtime packages, release assets, compatibility guidance, and public documentation are released from the same validated candidate.
Recommendation
Adopt a repository-owned release command modeled on the release process proven in
projectious-work/aibox. The goal is a repeatable, resumable release ritual that validates the exact candidate, publishes complete artifacts and documentation, and leaves authoritative post-publication evidence.Reference process to replicate
1. Version-line authority
mainthrough a PR.2. Phase 0: state and doctor reports
Before version/tag mutation:
Suggested outputs:
dist/RELEASE-STATE.mddist/RELEASE-DOCTORS.md3. Candidate-bound validation
After version metadata is correct, bind validation to:
Run independent gates with bounded concurrency and separate logs. Reuse evidence only when every binding still matches. Typical gates:
Store local evidence under a candidate-specific directory such as
dist/release-evidence/vX.Y.Z/<commit>/.4. Documentation gate before publication
Make documentation validation mandatory whenever tag or release publication is selected:
release-notes/vX.Y.Z.md;Deploy documentation only after the candidate passes this gate.
5. Publication
From the protected release branch:
Do not create a bare GitHub release that omits artifacts.
6. Optional host-only phase
If some targets or containers require a separate host/runtime:
7. Final verification
Verify the public release, expected assets/checksums, installer behavior, published packages/images if applicable, documentation URL, release-branch/tag ancestry, and final worktree state. A local green test run alone is not release completion.
Suggested interface
./scripts/maintain.sh release X.Y.Z ./scripts/maintain.sh release X.Y.Z --steps phase0 ./scripts/maintain.sh release X.Y.Z --steps checks,build ./scripts/maintain.sh release-host X.Y.Z # only if host-only work existsEquivalent naming is fine; one repository-owned entrypoint should orchestrate the ritual.
Acceptance criteria
Why this fits processkit
processkit already has strong schema, doctor, migration, and release-audit concepts. This process would make those checks part of a single executable publication contract and ensure its CLI/runtime packages, release assets, compatibility guidance, and public documentation are released from the same validated candidate.