1. Rotate exposed credentials when needed
If a credential might have been exposed, rotate every affected value before release. Depending on the affected system, this can include:- Discord bot token
- R2 access key secret
- NVIDIA NIM API key
- GitHub personal access token
- GitHub webhook secret
- Upload-worker bot HMAC secret
2. Lock down host files
On the Akron Discord host, verify:3. Configure upload-edge controls
For the public upload Worker:- Deploy the current D1 migrations before the Worker code.
- Enable the scheduled cleanup trigger and confirm expired quarantine objects are deleted from both D1 and R2.
- Add Cloudflare rate limits for prepare, object upload, completion, and attribution routes.
- Keep direct-origin access behind Cloudflare so
CF-Connecting-IPis authoritative. - Configure an R2 lifecycle rule as a second cleanup layer for abandoned quarantine objects.
- Alert on quota rejection rate, quarantine bytes, cleanup failures, and moderation queue age.
4. Apply and verify Discord permissions
Run the normal server synchronization so the playtester announcements channel becomes staff/bot-write-only. Then verify with a non-staff Tester account that it cannot post messages or attachments there. Confirm that upload attribution only reaches a member of the configured guild and that repeated claims remain within the configured cooldown.5. Configure release secrets and approvals
- Set
AKRON_CELESTE_REFS_SHA256to the reviewed SHA-256 of the exact private reference archive. - Keep
release-buildavailable to required CI checks without deployment approval. - Require a maintainer reviewer for
releasewhen a second maintainer is available. A solo maintainer may authorize publishing only after completing the pre-release checklist. - Restrict GameBanana, Tailscale, and GitHub publishing secrets to the isolated publish job/environment.
- Protect the default branches in both
Microck/akronandMicrock/akron-discordwith required CI checks, no force pushes, and no deletion. Protect Akron’srefs/tags/v*against unauthorized creation, movement, or deletion. - Confirm failure artifacts contain only the sanitized JSON summary and use the configured short retention period.
6. Final verification
- Run the full Akron and Akron Discord test suites.
- Run npm and NuGet advisory scans.
- Run the redacted secret scan.
- Build the player archive and verify that it contains no PDB, environment, database, test, or credential files.
- Generate and retain the release SBOM and GitHub artifact attestation.
- Test the upload, moderation, catalog download, and pack-import paths in the maintained release test environment before announcing the release.