Problem: runbooks are agent-executable procedures but lived at the repo root, separate from the other agent instruction now under .agents/. Change: - Move runbooks/<name>.md -> .agents/skills/<name>/SKILL.md (folder per skill, matching the wiki-hq skills layout). Frontmatter (name, risk_class, inputs, verification, docs_update_checklist, transition) preserved. - Rewrite links (inbound from plans; between-skill siblings) via the move map. - Update prose references in AGENTS.md, HERMES.md, .agents/OIKOS.md, and the operations schema; fix a pre-existing stale link to operations/commands.md. No code consumed runbooks/ by path, so nothing else changes. Verification: all SKILL.md frontmatter parses with valid risk_class; every lifecycle transition resolves to an oikos/ontology.yaml state; broken-link count 127 -> 126 (fixed one, introduced none). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
name, risk_class, inputs, verification, docs_update_checklist, transition
| name | risk_class | inputs | verification | docs_update_checklist | transition | ||
|---|---|---|---|---|---|---|---|
| lifecycle-activate-node | config_mutation |
|
homelab service <name> health (if it hosts a service); homelab doctor (if it's a client) |
|
provisioning -> active |
Lifecycle: activate a node
Per oikos/ontology.yaml. Requires: age key enrolled if it needs secrets, mesh joined if it needs off-LAN reach, ingress live if public, health check answering, doc page complete, ledger entry.
- If the node is a
homelabclient: finish enrollment per client-enrollment.md (--finalize-pubkey, mesh join,homelab doctorgreen). - If it hosts a public service: add the
services:entry ininventory.yaml(backend, url, doc_page, config_repo, risk_notes — see the Week-1 service contract fields) and wire the Caddy route indtoro/caddy-conf. - Confirm the health check answers:
homelab service <name> healthor a directcurl. - Flip
state: provisioning→state: active(or delete thestate:field —activeis the default) ininventory.yaml. - Complete the doc page (stub → full narrative: role, specs, how it's configured, dependencies).
- Record the activation:
oikos/ledger.py append host:<name> activate config_mutation --result ok(or let the CLI wrapper do this once Week 3's runbook automation lands).
Regenerate derived data: python3 mcp/build_host_files.py && python3 oikos/gen-topology.py so hosts/<name>.yaml, the topology diagram, and
the context card all reflect the new state.