Problem: after the wiki-hq reorg, agent-instruction and human-doc domains were still scattered across the repo root, with three now-redundant stub files cluttering it. The organizing principle wasn't visible in the layout. Change — enforce three clear buckets: - .agents/ = how agents operate: OIKOS.md, HERMES.md (moved from root), shared/ conventions, domains/ schemas, skills/, and operations/ (operator cheatsheet + enrollment + hermes-agent, moved from root). - knowledge/ = what exists + evidence: wiki/, GLOSSARY.md, and sources/ now including investigations/ (incident records are evidence/sources). - root = substrate + two entry points (AGENTS.md, README.md), plus plans/ as its own design-intent domain. Moves: - investigations/ -> knowledge/sources/investigations/ (incl. archive/, index). - operations/ -> .agents/operations/. - HERMES.md -> .agents/HERMES.md. - Deleted unreferenced root stubs CAVEMAN.md, CONTRIBUTING.md, and OIKOS.md (its 7 remaining linkers repointed to .agents/OIKOS.md). Consumers updated: - inventory.yaml doc_page (agent-enrollment) + regenerated hosts/*.yaml + cards. - tools/setup-hermes-soul.sh and bootstrap.sh (x2) -> .agents/HERMES.md. - bin/homelab help string -> .agents/operations/hermes-agent.md. - knowledge/operations schemas, llm-wiki, page-templates, incident-investigation skill, AGENTS.md/README nav -> new investigations/operations paths. - All markdown links rewritten via the path-resolving mapper. Left in place (substrate/executable/separate-domain): hosts/, ledger/, tools/, plans/, oikos/, mcp/, secrets/, bin/, inventory.yaml. Verification: docs-lint at baseline (2 intentional cross-repo refs, no new breakage); gen-topology.py --check exit 0; build_host_files.py idempotent; all doc_page targets resolve; Hermes provisioning scripts point at the new path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
1.5 KiB
Markdown
35 lines
1.5 KiB
Markdown
---
|
|
name: config-change-deploy
|
|
risk_class: config_mutation
|
|
inputs: [service_name, change_description]
|
|
verification: "curl -sf <service_url> (or homelab service <name> 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 <service>` — 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 <name> 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.
|