--- name: config-change-deploy risk_class: config_mutation inputs: [service_name, change_description] verification: "curl -sf (or homelab service health)" 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. `homelab change 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 `oikos/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](../../../knowledge/wiki/infrastructure/auto-deploy.md) for the exact receiver/reload for this service). 5. Run the preflight's verification command. If it fails, check `homelab service log` for the reload/restart error. 6. Record the change: once `oikos/ledger.py` is wired into deploy tooling (Week 3), this is automatic; until then, note the change and outcome in the relevant investigation/plan doc. 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.