{% extends 'workflows/base_shell.html' %} {% load static i18n %} {% block title %}{% trans "Release Checklist" %}{% endblock %} {% block extra_css %} {% endblock %} {% block shell_body %} {% include 'workflows/includes/app_header.html' with header_show_home=1 header_inside_shell=1 %}
{% trans "Release" %}

{% trans "Release Checklist" %}

{% trans "Back to Handbook" %}

{% trans "Single runbook for preparing, validating, and evidencing a safe application release. Use it for both local production-like rollouts and future CI/CD handoffs." %}

{% trans "1. Pre-release checks" %}

git status --short
docker compose up -d --build web worker

{% trans "2. Validation commands" %}

make release-validate

# individual commands if needed:
docker compose exec -T web python manage.py check
docker compose exec -T web python manage.py test
docker compose exec -T web python manage.py verify_latest_backup --create-if-missing
make i18n-compile
docker compose exec -T web python -c "import requests"

{% trans "3. Data and asset steps" %}

docker compose exec -T web python manage.py makemigrations
docker compose exec -T web python manage.py migrate
docker compose exec -T web python manage.py collectstatic --noinput

{% trans "4. Integration checks" %}

curl --max-time 8 http://127.0.0.1:8088/healthz/
docker compose exec -T web python manage.py run_staging_e2e_check

{% trans "5. Release evidence" %}

{% trans "6. Rollback basics" %}

docker compose logs --no-color --tail=200 web
docker compose logs --no-color --tail=200 worker
{% trans "Project rule: German remains the primary/fallback language. English is secondary. If a release adds new dynamic text, add the German source first and then the English value." %}
{% endblock %}