--- name: config-change-deploy risk_class: config_mutation inputs: [service_name, change_description] verification: "curl -sf (or MCP get_service_status)" docs_update_checklist: [doc_page, changelog] --- # Config change + deploy Goal: change a tracked config repo (Caddy, Gitea customizations, an app's own repo) and get it live, safely. 1. MCP `preflight` — current health, the service's `config_repo`, its risk class, and the verification command to run after. If risk class requires approval (`config_mutation` or `destructive`), stop and get operator sign-off before editing — see `seeds/policy.yaml`. 2. Clone/pull the `config_repo` (never edit the backend's working tree directly — tracked configs change by commit + push, per [OIKOS.md](../../OIKOS.md) conventions). 3. Make the change, commit, push to `main`. 4. The Gitea webhook fires the deploy pipeline for that repo (see [infrastructure/auto-deploy.md](../../../archive/knowledge/infrastructure/auto-deploy.md) for the exact receiver/reload for this service). 5. Run the preflight's verification command. If it fails, check MCP `tail_log` for the reload/restart error. 6. No manual record-keeping step needed — mutations made through the API (e.g. via the `run` MCP tool) are recorded automatically in the `audit_log` table. Docs-update checklist: update the service's `doc_page` if the change alters its behavior, ingress route, or ownership; add a changelog entry if the page has one.