Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqpXh3hQMMaC74pTjFq4it
Gitea 1.25 cannot run reusable workflows (workflow_call), so the logic of
deploy-app.yml, smoke.yml and ci.yml moves into composite actions under
.gitea/actions/, and each repo gets a thin pipeline rendered by
tools/gitea-pipeline/render.py from repos.json. .github/workflows is left
untouched (Gitea ignores it once .gitea/workflows exists).