- Rewrite AGENTS.md: DB as source of truth, MCP knowledge tools, archive refs - Fix OIKOS.md: seeds/ paths, remove Python-era notes, update deployment status - Fix commands.md, agent-enrollment.md: archive/knowledge/ links - Fix all SKILL.md files: remove hosts/*.yaml refs, point to inventory.yaml - Fix HERMES.md, schema.md, page-templates.md, llm-wiki.md: update paths - Fix bootstrap.sh: identity check reads inventory.yaml - Fix README.md, cutover-checklist.md: stale wiki references - Move convert-wiki.py to archive/ (one-shot done)
2.9 KiB
Knowledge domain — schema
The knowledge domain is the durable, authoritative current-state documentation of the homelab: one page per node and per cross-cutting system, synthesized from live state and evidence. It answers "what exists and how does it work right now."
It follows the LLM Wiki layer model and the writing-style and page-templates rules.
The narrative / substrate split
The knowledge wiki is narrative. It sits alongside a machine-readable substrate that it describes but never contains. The split is load-bearing: several programs read the substrate at fixed paths, so the wiki reorganization never moves it.
| Layer | Location | Consumed by |
|---|---|---|
| Substrate — source of truth | inventory.yaml (root) |
MCP server, homelab CLI, oikos/ scheduler/drift/relations/gen-topology |
| Substrate — generated host records | inventory.yaml (root) |
Go internal/mcp/ server, bin/homelab; the single source of truth |
| Substrate — kernel + context cards | oikos/ (code, oikos/cards/, oikos/state.json) |
MCP explain, scheduler |
| Narrative — synthesized wiki | archive/knowledge/{hosts,containers,vms,infrastructure}/ |
humans, agents via MCP get_page / search_docs |
| Evidence — immutable sources | knowledge/sources/ (references + investigations) |
synthesis into wiki pages |
Wiki pages
- Node pages (
archive/knowledge/containers/<id>-<name>.md,.../vms/<id>-<name>.md,.../hosts/<name>.md) follow the container/host template in page-templates.md: opening definition,## At a glance,## Role, service/port map, storage, auto-deploy,## Related,## Changelog. - Cross-cutting pages (
archive/knowledge/infrastructure/<topic>.md) follow the cross-cutting template:## Why,## Components,## How to apply,## Gotchas,## Related,## Changelog. - Each
inventory.yamlhost entry carries adoc_page:field pointing at its narrative page. Changing where a page lives means updating that field (read bybin/homelab).
The two logs
- The per-page
## Changelogrecords infrastructure changes and is machine-parsed (get_changelog, the Oikos ledger). Keep the### YYYY-MM-DD — titleshape. knowledge/log.mdis append-only and records documentation-maintenance operations only (restructures, source ingests, lint sweeps):## [YYYY-MM-DD] <op> | <summary>. It never duplicates the Oikos change ledger (oikos/ledger.py).
Same-session update rule
A change to a node updates every page that references it in the same session — the node page, the
section README.md table, the root README.md, the Caddy/DNS/ingress pages, the host page, and
inventory.yaml. See page-templates.md.