Before going public
Finish the additional application, repository, and publishing tests first. Then squash the development history, recreate the repository, and make it public. This is the single checklist for that transition; record unresolved launch issues here rather than adding them to installation or operator guides.
Finish testing
- Exercise local preparation and private publication end to end. The 0.6.0-multiarch-test.20260910.1 trial passed source/application/SQLx checks, built AMD64 locally and ARM64 on a native Codefloe worker, and passed both images’ installation/restore and federation drills. A full local ARM64 build and drill also passed under QEMU. The signed multi-architecture image and architecture-specific downloads were published, read back, and verified, including publication retries. Package linking was corrected in the publishing tool without rebuilding the tested artifacts. See CI/CD for the tested scope.
- Install both published architecture archives on fresh Debian 13 VMs. Each contains one executable, systemd unit, Plamenu and Caddy examples, and license. Both passed first-Owner login, posting and media upload, real guest reboot with enabled services, and restore into an empty database and media directory. Existing login tokens, posts, media bytes, and Owner roles survived. These used PostgreSQL 17 and a private Caddy CA; restore reused the VM with replacement storage, and public DNS/ACME remain part of final public testing.
- Test owner-account fork PRs and push contribution checks. Direct and force
pushes to a disposable branch with the
mainprotection rules were rejected, as were merges before both required statuses passed. The corrected fork PR and fork’smainpush passed quick checks and Clippy. A version tag started no workflow. No test, release build, or publication jobs ran. Disposable upstream branches and rules were removed; upstreammainand its protections were unchanged. The private test fork is archived with Actions disabled: the test token lacks thewrite:userscope required to delete a personal repository. - Test ordinary-contributor access with a separate account. The tested fork belongs to the repository owner, so it cannot establish outsider permissions. This check is intentionally pending until that account is available.
- Resolve the missing DCO sign-off in history before the public transition. A fork PR
containing the current development history correctly failed on commit
5cc516ca, which lacks a sign-off. The planned signed, DCO-compliant squash must be checked again. The separate OAuth placeholder false positive found by secret scanning was corrected; the full historical scan now passes. - Retain the test evidence outside the repository to be recreated. The
private
pre-public-testing-20260910backup contains both image archives, release assets and source, check/build logs, fresh-host results and restore backups, protection-test records, and unresolved history/access notes. All eight retained release assets matched fresh authenticated downloads. These local copies do not depend on Codefloe artifact expiry.
Documentation deployment
- Implement the shared local deployment command and release hook. Every page identifies its corresponding source build. Signed deployment commits, unchanged-content retries, concurrent pushes, and hosted failure handling are covered by tests. See the operating procedure.
- Enable Pages and verify the live documentation.
The first deployment on 10 September 2026 passed anonymous HTTPS readback of
all 87 generated files, and an unchanged-source retry reused its signed
deployment commit. Every page displays its version, build number, and source.
Hosting uses
mainin the separateplamenu/docsrepository. Pages is disabled on the application repository, and its temporarypagesbranch has been removed. Public docs publication was authorized separately; source and package visibility remain private. - Deploy the final public release’s docs from its exact source and verify its version/build banner and hosted files.
Prepare the public configuration
- Set
allow_public = truein the local release configuration only after authorizing the public transition. Update any retained profiling experiments’ private-only policy separately; they are not part of release preparation. - Update
ci/codefloe-settings.jsonandscripts/codefloe-settings.pyfor the public repository. They currently require a private repository too. - Decide the package-owner visibility alongside repository visibility. Verify access to images separately from access to source and release assets.
- Confirm the local release token, Cosign key, password, and Git SSH signer
in the publishing setup. Retain protected key
backups and confirm the public keys in
release/cosign.pubandrelease/allowed-signers. Secrets and local credential-location notes must stay out of the public tree. - Remove disposable probe workflows, trial destinations, and investigation records that have no ongoing use. Check the release guide against the final tested workflow and remove stale private-only instructions.
- Confirm the public contact addresses, repository description, license, and installation links. Keep the initial release scope to tested targets; Validate both AMD64 and ARM64 builds and installation paths.
Squash and recreate
- Preserve a private backup of the existing repository and any issues, settings, release assets, or test evidence that should survive recreation. Git history alone does not contain all of those.
- Confirm version
0.6.0and date the initial public changelog entry before finalizing the source revision for release. - Create and sign the squashed history, retaining the DCO sign-off. Review the exact files that will be public, including generated files and fixtures.
- Recreate the repository and restore the required setup: Actions, issue
labels, the
maintainersteam,CODEOWNERSaccess, protectedmain, and maintainer-onlyv*tags. Require the quick and Clippy PR statuses. - Reinstall repository secrets and any repository-bound credentials or integrations. Check Git remotes, workflow URLs, and registry destinations.
- Test the protections and automatic checks again in the recreated repository, including the diff base used with the new history. Verify commit signatures both locally and on Codefloe.
Validate the final release and public access
- Run
./dev release --publishfrom the final squashed source revision. The command reruns checks for that source, builds and tests the artifacts, and creates the signed version tag and release. Earlier trial results do not substitute for checking the final source. - Make the repository and intended packages public, then verify anonymous cloning, release downloads, image pulls, and signature verification from a fresh environment. Run the published installation commands against those downloads.
- Configure documentation hosting if it is part of the launch. Check that links resolve and the published docs match the released version.
- Remove this checklist once the transition is complete; keep ongoing procedures in the maintainer and release guides.