A dispatch from another branch, or a v* tag cut on a branch, could otherwise
become the image every user pulls. An older tag on main is still accepted
so a rollback works.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every merge to main that touched app/ published a signed release, and every
merge touching container/ moved :latest, the image installed apps pull. That
made it impossible to land phased work (the AWS host) on main without
shipping each step.
- build-app.yml runs only on workflow_dispatch. Dispatched on main it
releases; on any other branch it stays a build/sign/verify dry run.
- Release tags are pinned to the dispatched commit (target_commitish), and
create-tag now fails if the tag points anywhere else.
- After tagging, the release dispatches build.yml and build-stt.yml with the
tag. They build that tag and move :latest.
- Pushes to main publish containers as :edge and :<sha> only. The weekly
security rebuild rebuilds the newest release tag, not main.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>