--- name: dirextalk-message-server-release description: Use when preparing, verifying, publishing, retrying, or auditing a stable Dirextalk message-server version image and GitHub Release. --- # Dirextalk Message Server Release Use the repository-owned release scripts; do not reconstruct the Git tag, Docker image, GitHub Release, or `latest` update by hand. ## Prepare 1. Read `references/release-contract.md`, the target `release/vX.Y.Z.json`, and the current release scripts. 2. Separate inspection and preparation from external publication. Pushing commits, tags, images, or creating Releases requires explicit authorization. 3. Keep the canonical source version, release notes, client compatibility, and schema metadata aligned in one reviewed commit. 4. Treat the central `appId=1`, `channelId=server` version record as the only upgrade authorization. Repository release metadata does not declare source versions, image identities, or upgrade paths. ## Verify Run: ```text bash scripts/release/contract_test.sh go test ./internal/releasecontrol ./internal/httputil ./setup ./p2p ./internal/productpolicy -count=1 go test -tags=dendrite_upgrade_tests ./cmd/dendrite-upgrade-tests -count=1 go build ./cmd/dirextalk-message-server git diff --check ``` Then use the scripts in order: ```text bash scripts/release/prepare.sh vX.Y.Z bash scripts/release/verify.sh vX.Y.Z bash scripts/release/publish.sh vX.Y.Z ``` `publish.sh` is authorized only after the tree is clean, `HEAD` equals the reviewed `origin/main`, and `verify.sh` produced commit-bound evidence. Fix a faulty gate in code; never bypass it. ## Stop And Report Stop when version, notes, compatibility metadata, schema metadata, image labels, image version output, or Git tag disagree. Resolve any conflicting tag before retrying the release. `latest` must move only after the version image and formal GitHub Release are published successfully. After publication, pull `latest` and verify its version/revision labels, embedded binary version, and running `/_p2p/health.version`. Record non-secret results and any retryable partial state.