Release Checklist
Status: internal release procedure.
Authority And Scope
This checklist is used by a maintainer preparing a Cite2Site release candidate. It does not mark a release ready by itself. Release readiness requires matching evidence in the current status matrix, passing local validation, and observed remote CI when the release gate requires it.
Relevant authority:
- CI validation
- Current status matrix
- Project plan
- Documentation standard
- Implementation specification
- Protocol specification
- Schema index
- Schema migration policy
- Threat and privacy checklist
- Local package artifact check
Release Candidate Inputs
Record these before starting the checklist:
| Field | Value |
|---|---|
| Candidate version | |
| Git branch | |
| Commit SHA | |
| Python versions validated locally | |
| Remote CI run URL | |
| Remote CI conclusion | |
| Release owner | |
| Date |
Remote CI fields may remain blank for local-only preparation work, but a public release must not proceed while they are blank.
Current-State Truth Review
- Compare every release note claim against CURRENT_STATUS_MATRIX.md.
- Confirm every user-visible capability in the changelog is labelled Done or Partial in the status matrix with evidence.
- Confirm Target and Open capabilities are not described as available.
- Confirm external docs do not imply right-click integrations, rich adapters, lifecycle commands, or remote publication features are shipped unless the status matrix says so.
- Confirm no release document treats generated exports, MkDocs pages, or artifact indexes as authority.
Local Validation
Run these commands from a clean working tree or record why the tree cannot be cleaned:
python -m unittest discover -s tests
python -m compileall src
python -m c2s --help
python tools/check_package_artifact.py
The package artifact check must build an installable artifact and validate the installed package, not the source checkout.
Documentation Validation
- Parse every JSON file under
build-docs/. - Check every local Markdown link under
build-docs/. - Confirm every
AGENTS.mdreading-order target exists. - Search changed docs for stale internal references, outdated phase claims, and unlabelled Target language.
- Confirm architecture, workflow, and release docs agree on schema versions, publication privacy defaults, and source-clean authority.
Package Artifact Validation
- Build the wheel from the candidate source tree.
- Install the wheel into a new temporary virtual environment with
--no-deps. - Run the installed package with
python -m c2s --help. - Run
init,cite-selection,lookup-actions,status,citations,export, andcheckthrough the installed package. - Hash the cited artifact before and after the smoke flow.
- Verify required flat and grouped export files exist.
- Run export twice and compare projection bytes for deterministic output.
- Delete the temporary environment unless debugging requires preserving it.
Schema And Migration Review
- List every supported schema version.
- Confirm new schema versions have migration fixtures before release.
- Confirm unknown or corrupt schema fixtures fail with stable diagnostics.
- Confirm migration procedures back up authority files before writing.
- Confirm migration procedures never rewrite cited artifacts.
- Confirm generated projections are regenerated after migration rather than migrated as authority.
Security, Privacy, And Dependency Review
- Complete THREAT_PRIVACY_CHECKLIST.md.
- Confirm
pyproject.tomlstill has no runtime dependencies unless a dependency ADR and review exist. - Confirm packaging metadata does not include local secrets, temporary paths,
generated
.c2srepositories, or private artifacts. - Confirm default exports are
metadata_only. - Confirm snippet and private-link projections remain policy-gated.
Release Decision
Use these outcomes:
| Outcome | Meaning |
|---|---|
| Proceed | Local validation passes, remote CI is observed green, and release docs match current status. |
| Hold | A non-release-blocking issue needs owner review before publishing. |
| Block | Validation fails, CI is absent for a public release, privacy review fails, or docs overstate current behavior. |
Record the decision, evidence links, and rollback owner before tagging.
Rollback Plan
- Stop publication of the release artifact.
- Leave citation repositories untouched.
- Publish a corrective changelog entry that identifies the affected package version and the safer replacement version or commit.
- If a schema migration was released, document whether repositories that ran it can continue safely, need restoration from the migration backup, or require a forward repair.
- Open a follow-up issue or gate with exact validation evidence.