This is the control document for the Gozo holding wiki. It defines where things go, how pages look, and how the ingestion endpoint decides what to do with new material. Both humans and the automated ingestion/maintenance jobs read this file. If you change the taxonomy, change it here first.
This wiki follows the "LLM wiki" pattern: raw sources are read but never edited; the wiki is a persistent, compounding, cross-linked artifact; this schema is the configuration that governs it.
index.md (catalog) and log.md (change record).Top-level sections. Each section has a landing page at /<section> and child pages under /<section>/.... Do not invent new top-level sections — if something doesn't fit, put it in the closest section and raise it for a schema change.
| Section | Path | What belongs here | What does NOT |
|---|---|---|---|
| Companies | /companies |
One page per operating company in the holding: overview, ownership, org, key people, links to that company's projects/services. | Deep technical docs (link out to them instead). |
| Projects | /projects |
Initiatives with a start/end or a deliverable — cross-company or company-specific. Status, goals, stakeholders, links. | Standing services (those go under Services). |
| APIs | /apis |
API reference & directories: endpoints, auth, schemas, integration notes, one page per API/surface. | Running-service ops docs (Services). |
| Services | /services |
Standing/deployed services & internal tooling: what it is, who owns it, where it runs, runbooks. | The code's API contract (APIs). |
| Domains | /domains |
Business/knowledge domains, glossaries, market/vertical knowledge, entity pages that don't belong to one company. | Anything tied to a single company (Companies). |
| Architecture | /architecture |
System designs and diagrams (Mermaid in Markdown), ADRs (architecture decision records), data flows. | Per-service runbooks (Services). |
| Onboarding | /onboarding |
Getting-started guides by role/team, access checklists, "your first week." | General SOPs (Processes). |
| Processes | /processes |
Company processes & SOPs: how we do X. Finance, HR, ops, engineering workflows. | Role onboarding (Onboarding). |
acme-logistics, not Acme Logistics or acme_logistics./companies/<slug> (file companies/<slug>.md), children live under companies/<slug>/... (e.g. companies/<slug>/org, companies/<slug>/contacts)./projects/acme-<project-slug>; an Acme service is /services/acme-<service-slug>. Cross-company items skip the prefix.Every page starts with YAML frontmatter (Wiki.js manages/normalizes it, but author it so external commits import cleanly):
---
title: Human Readable Title
description: One sentence, <= 160 chars, used in search and the catalog.
published: true
date: <ISO8601>
tags:
- <company-slug or cross-company>
- <type: overview|reference|runbook|adr|sop|onboarding|glossary>
- <domain if relevant>
editor: markdown
dateCreated: <ISO8601>
---
Then an # H1 matching the title, then the body.
.md: [Acme Logistics](/companies/acme-logistics). Do not use [[wikilinks]] — Wiki.js renders standard links. Every page should link to its parent section and to related pages; orphan pages are a lint failure.cross-company) and the page type.When new material arrives, the endpoint loads this file + index.md and decides, for the material, a JSON plan:
{
"action": "create" | "update",
"path": "/section/slug",
"title": "…",
"description": "…",
"tags": ["…"],
"section": "companies|projects|apis|services|domains|architecture|onboarding|processes",
"related": ["/path/one", "/path/two"],
"reason": "one line: why this section/path, why create vs update"
}
Decision procedure:
index.md for an existing page on the same concept (same company + same subject). If one exists and the material is an update/superset, action: "update" that page's path. Only create when nothing covers it. This is the rule that keeps the wiki compounding instead of sprawling.cross-company), page type, and any domain.related pages to cross-link (parent section always; siblings by shared company/domain).After writing, the endpoint updates index.md (add/refresh the catalog row) and appends one line to log.md.
index.md — the catalogA browsable catalog of every page, grouped by section, one row per page: [Title](/path) — description (tags). It is regenerated/patched on every ingest and audited by the maintenance job. Treat it as derived data, not a place to write prose.
log.md — the change recordAppend-only. One line per ingest or significant maintenance action: - YYYY-MM-DD HH:MM — action — /path — source. Never rewrite history here.
This repo and Wiki.js sync bidirectionally. To avoid write races:
See templates/ for copy-paste starting points for each page type.