- .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.
49 lines
2.9 KiB
Markdown
49 lines
2.9 KiB
Markdown
# 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](../../shared/llm-wiki.md) and the
|
|
[writing-style](../../shared/writing-style.md) and [page-templates](../../shared/page-templates.md)
|
|
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](../../shared/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.yaml` host entry carries a `doc_page:` field pointing at its narrative page.
|
|
Changing where a page lives means updating that field (read by `bin/homelab`).
|
|
|
|
## The two logs
|
|
|
|
- The per-page **`## Changelog`** records infrastructure changes and is machine-parsed
|
|
(`get_changelog`, the Oikos ledger). Keep the `### YYYY-MM-DD — title` shape.
|
|
- **`knowledge/log.md`** is 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](../../shared/page-templates.md#same-session-update-rule).
|