- .agents/OIKOS.md: rewrote entire Build Status section from Python 30-day roadmap to Go Phases 1-6 status. Added Python-era backlog preservation. - knowledge/wiki/containers/105-apps.md: added DEPRECATED notices for homelab-mcp and secrets-issuance services, pointing to Go equivalents and cutover checklist. - knowledge/wiki/infrastructure/auto-deploy.md: marked webhook ids 10+11 as deprecated, replaced Go Docker stack. - knowledge/wiki/infrastructure/index.md: noted topology gen as Python with Go DB-native replacement planned. - .agents/operations/hermes-agent.md: updated MCP references from FastMCP SSE Python to Streamable HTTP Go SDK. - .agents/shared/writing-style.md: updated MCP reference, topology note. - .agents/domains/knowledge/schema.md: updated MCP server reference.
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 | hosts/*.yaml (root) |
Go internal/mcp/ server, bin/homelab; written by mcp/build_host_files.py |
| Substrate — kernel + context cards | oikos/ (code, oikos/cards/, oikos/state.json) |
MCP explain, scheduler |
| Narrative — synthesized wiki | knowledge/wiki/{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 (
knowledge/wiki/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 (
knowledge/wiki/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.