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-deprecate-node | config_mutation |
|
homelab node <name> relations — 'affected by' must be empty before completing |
|
active -> deprecated |
Lifecycle: deprecate a node
Per oikos/ontology.yaml: a node keeps running
but takes no new dependents. Completion condition: zero remaining
inbound depends-on/routes-to edges — this is a hard gate, not a
suggestion; oikos/policy.yaml lifecycle_overrides.deprecated.refuse
lists new-inbound-edges as refused going forward.
- Set
state: deprecatedon the node. homelab node <name> relations— readaffected_by. Every entry there is something still relying on this node.- Migrate or retire each dependent one at a time (point its
backend/config_repo/ingress route elsewhere, or deprecate it too if it's being retired alongside). - Re-run
homelab node <name> relationsafter each dependent is moved. The transition todestroyedis only safe onceaffected_byis empty — check this every time, don't assume from memory. - Note the deprecation on the doc page: reason, replacement (if any), date.
If step 2 shows dependents you didn't expect, stop and investigate before proceeding — that's exactly the kind of drift the Week-3 detector will catch automatically, but until then this manual check is the gate.
Next (once affected_by is empty):
lifecycle-destroy-node.md.