Wiki Schema
The canonical reference for how every page in this wiki is structured. Follow this exactly.
See also: CONDUCT — companion doc covering agent behaviour (when to create/update/archive/delete, cross-agent etiquette, conflict resolution). SCHEMA defines structure; CONDUCT defines conduct. Both required reading at session start.
Domain
pvs’s home lab: AI/ML inference and training, Kubernetes infrastructure, autonomous agents, web applications, security research, and operational knowledge.
File Naming
- Lowercase, hyphens, no spaces:
transformer-architecture.md - Projects use directory structure:
projects/<slug>/index.md - Session logs:
projects/<slug>/sessions/YYYY-MM-DD.md - Never use underscores, camelCase, or spaces in filenames
Frontmatter (required on every compiled page)
---
title: "Human-readable page title"
type: entity | concept | comparison | query | project | session
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags: [from taxonomy below]
sources: [raw/articles/source.md, raw/team-knowledge/lesson.md]
status: active | stale | archived # optional, default: active
---All fields except status are required. Always bump updated when editing.
Page Types
entity
One page per distinct thing (tool, service, model, person, component).
---
title: "llama.cpp"
type: entity
created: 2026-04-22
updated: 2026-04-22
tags: [inference, tool, open-source]
sources: [raw/articles/llama-cpp.md]
---
# llama.cpp
## What it is
<1-3 sentence summary>
## Key facts
- <fact with date if relevant>
- <fact>
## How we use it
<our specific setup, config, quirks>
## Related
- `vllm` — alternative inference server (see [[skills/mlops/inference/vllm/SKILL.md]])
- [[concepts/hermes-k8s-deployment]] — where it runsconcept
One page per idea, pattern, or technique.
---
title: "KV cache quantization"
type: concept
created: 2026-04-22
updated: 2026-04-22
tags: [inference, optimization]
sources: []
---
# KV cache quantization
## What it is
<definition>
## How it works
<explanation>
## Tradeoffs
<what you gain and lose>
## Open questions
<what's unresolved>
## Related
- `llama-cpp` — supports q4_0, q8_0 KV cache
- [[skills/mlops/inference/vllm/SKILL.md]] — different approachcomparison
Side-by-side analysis of 2+ things.
---
title: "llama.cpp vs vLLM"
type: comparison
created: 2026-04-22
updated: 2026-04-22
tags: [inference, comparison]
sources: []
---
# llama.cpp vs vLLM
## Why compare
<context>
## Comparison
| Dimension | llama.cpp | vLLM |
|---|---|---|
| Speed | ... | ... |
| VRAM | ... | ... |
## Verdict
<synthesis>project
Overview page for a long-running project. Lives at projects/<slug>/index.md.
---
title: "Smart Groceries"
type: project
created: 2026-04-22
updated: 2026-04-22
tags: [web-app, project]
sources: []
status: active
---
# Smart Groceries
## Goal
<desired end state>
## Budget
- **Schedule:** Daily at HH:MM UTC
- **Time per session:** N minutes
## Status
<current state — what's done, what's next>
## Sessions
- Session example: `YYYY-MM-DD` — initial setupsession
Daily work log for a project. Lives at projects/<slug>/sessions/YYYY-MM-DD.md.
---
title: "Smart Groceries — 2026-04-22"
type: session
created: 2026-04-22
updated: 2026-04-22
tags: [project, session]
sources: []
---
# Smart Groceries — Session 2026-04-22
## Goal
<what you planned to do>
## Progress
- 02:00 — started, read project index
- 02:05 — <what you did>
- 02:30 — <what you did>
## Outputs
- git commit abc123: "initial project scaffold"
- created projects/smart-groceries/sessions/2026-04-22.md
## Issues / Questions
- QUESTION: should the frontend use React or plain HTML? (for pvs)
- BLOCKED: Woolworths API requires auth — need credentials
## Status
partial — scaffold done, API integration nextquery
Answer to a specific research question.
---
title: "What quantization is best for 24GB VRAM?"
type: query
created: 2026-04-22
updated: 2026-04-22
tags: [inference, optimization]
sources: [raw/team-knowledge/some-lesson.md]
---
# What quantization is best for 24GB VRAM?
## Short answer
<1-2 sentences>
## Detail
<full analysis>
## Sources
<what was consulted>Tag Taxonomy
Every tag on a page must exist here. Add new tags to this list before using them.
Technical
model,architecture,benchmark,training,inferenceoptimization,fine-tuning,alignment,quantizationtool,library,framework,api
Infrastructure
kubernetes,docker,gitlab,ci-cd,storage,networking,infrastructuremonitoring,deployment,security,backup
Domain
web-app,agent,wiki,research,dataopen-source,commercial,paper
Organisation
person,company,lab,project,session
Meta
comparison,timeline,controversy,predictionmigration,lesson,pattern,troubleshooting
Skills (for auto-generated skill entity pages)
skill— for pages created from skills/ directory entriestechnique— for methodology/recipe-style skillsnotes— for raw reference/source files without structured content
Additional Tool Tags (commonly used by infrastructure and tool entities)
cache— for caching mechanisms, tools, and strategiesknowledge-base— for wiki/knowledge base systemsmarkdown— for markdown processing/rendering toolsweb— for web-related tools, frameworks, and technologies
Monitoring & Operations (added 2026-04-25)
alertmanager,alerts,grafana,observability,prometheus— monitoring stackops,operations,runbook— operational procedures
Data & Search (added 2026-04-25)
embeddings,vector-db,qdrant,ranking,wiki-search— data pipelines and search
Tool-Specific Tags (added 2026-04-25)
browser,camofox,web-capture— browser automation toolsemail,gmail,slack,mcp,oauth,google-workspace— communication and auth toolscalendar,sheets— Google Workspace tools
Domain-Specific Tags (added 2026-04-25)
asx,finance,trading,ibkr— finance/trading domain
Organization Tags (added 2026-04-25)
contacts,profile,communication,privacy-aware— people and org data
Project Meta Tags (added 2026-04-25)
capability,planning,roadmap,inventory,rebuildself-improvement,self-administration,sync,integration,coach,mr
Additional Meta Tags (added 2026-04-25)
audit,critical,inbox,docs
Runbook & Operations Tags (added 2026-05-01)
runbook— for operational runbook pagestier1,tier2,tier3— alert severity tierscluster-ops— cluster operations proceduresauto-draft— auto-generated draft content
Infrastructure Specific Tags (added 2026-05-01)
k8s— Kubernetes shorthandcontainer,oom— container runtime specificsproxmox— Proxmox virtualizationgvisor— gVisor sandboxingconcept— generic concept classification
Domain-Specific Service Tags (added 2026-05-01)
Missing Tags (added 2026-05-04)
ai— general AI topicsagents— agent system pageshermes— Hermes-specificactive— status indicatoragent-feedback,feedback,review— feedback and review contentcoaching— coaching/advisor contentconduct,governance,rules,meta— governance docsspec— specification documentsproject-session— project session logsreport— report/summary documentstools— general tools referencedevelopment— development processcron— cron job relatedovernight,automated,cluster— ops automationindex— index/catalogue pagesf5-tts,tts,voice— voice/TTS specific (distinct from general audio)latency— latency/performance metricmicrok8s— MicroK8s specificvideo-generation,synthetic-avatar,talking-head— video/avatar generationinvestment,tax— finance/investment analysis
Additional Common Tags (added 2026-05-31)
has-correction,has-instruction,has-tool-error— task quality markerssource-cli,source-api_server,source-cron— content source originlegend,legend-os— Legend OS project referencestask,visual-test,folder-inbox— Mercury task categoriesux,portal,goal-reflection,goals— UX and goal trackingjournal,telemetry,frontend— logging and system metricssvelte,self-improve,rag-alternative— web frameworks and AI patternscycle,workspace,visual-audit— process and workspace categoriestesting,legend-os,qa,smart-groceries,ci— project and quality domainspersona,test-result,vt-006,vt-003,vt-007,vt-005,vt-010— testing IDsmulti-agent— multi-agent system patterns
Lint & Automation Tags (added 2026-05-31)
automation,autonomous— automation-related contentautopilot— autopilot session and mode logslint,wiki-lint,wiki-lint-daily,wiki-cleanup— wiki linting processesauto-generated,generated— auto-generated pagesjanitor,cluster-janitor— cluster janitor operations
Visual Test Tags (added 2026-05-31)
vt-001throughvt-015— visual test identifiers
General Utility Tags (added 2026-05-31)
navigation— navigation-related contentplaywright,screenshot,visual— browser automation and screenshotsblocker— issues that are blocking progresscronjob— cron job related contentbugfix,feature— changelog categoriesinfra,services— infrastructure and servicessearch— search-related functionalitycleanup— cleanup operationsstatus— status reportingsocial,notifications— social features and notificationsproductivity— productivity trackingsso— single sign-on
Additional Tags (added 2026-05-31, lint batch)
daily— daily recurring content / daily sessionsschema-drift— schema consistency issuesbugs,resolved— bug tracking and resolutionqueue— task queue relatedsmtp,mastodon— mail and federation serviceshumhub— HumHub platformconfiguration,cli,template— config and CLI toolsvdi,personas— virtual desktops and persona systemsbug-fixes— bug fix trackingcycle-report— periodic cycle reportssetup,spawning,gateway— provisioning and gateway topicsbaseline— baseline measurementshermes-meta— meta-Hermes contenttest-report,smoke-test— testing artifactsbill-scan— bill scanning projectverification,regression— verification and regression testingpeft,lora,qlora,dpo,ppo,grpo,rlhf— fine-tuning methodsimap— IMAP protocolkanban,github,git— project management and VCSreminders,debugging— reminders and debug contentsignup,deploy— user onboarding and deploymentyaml,populate,keyboard— YAML, data population, keyboard inputmattermost,provisioning— Mattermost chat and provisioningdone— completed item indicatordiagrams,post-deploy— diagrams and post-deployment contentwidget— UI widget componentswiki-health— wiki health metricssettings,audit-log,gaming,learnings,archived— settings, audit logs, gaming VM, learnings, archived itemsspotcheck,plan— spot-checks and planningsource-workspace,noise-reduction— workspace sources and noise reductioncluster-watch— cluster monitoringsprint— sprint trackingqueue-redesign— task queue redesign projectbuild,typescript— build system and TypeScriptsource-email— email as content sourceevidence,acceptance,ralph-loop— evidence gathering, acceptance criteria, Ralph’s feedback loopprojects— generic projects reference
Lint & Automation Tags (added 2026-05-31)
automation,autonomous— automation-related contentautopilot— autopilot session and mode logslint,wiki-lint,wiki-lint-daily,wiki-cleanup— wiki linting processesauto-generated,generated— auto-generated pagesjanitor,cluster-janitor— cluster janitor operations
Visual Test Tags (added 2026-05-31)
vt-001throughvt-015— visual test identifiers
General Utility Tags (added 2026-05-31)
navigation— navigation-related contentplaywright,screenshot,visual— browser automation and screenshotsblocker— issues that are blocking progresscronjob— cron job related contentbugfix,feature— changelog categoriesinfra,services— infrastructure and servicessearch— search-related functionalitycleanup— cleanup operationsstatus— status reportingsocial,notifications— social features and notificationsproductivity— productivity trackingsso— single sign-on
Hierarchy and Index Rules (2026-04-24)
asx-trading,backtesting,synthesis,pipeline— ASX trading projectpaper-trading,paper-mode— paper trading modesdesign,trading-platform,ui— design system tagsplatform-reference,quantitative,equity-analysis— research platformsplatforms,reference,scanning— platform landscapedecision,ai-research,announcements— project metamercury,calliope,queue,hermes-meta— agent system tagscomms— communication infrastructuredaily— daily session tagging
Missing Tags (added 2026-05-04)
ai— general AI topicsagents— agent system pageshermes— Hermes-specificactive— status indicatoragent-feedback,feedback,review— feedback and review contentcoaching— coaching/advisor contentconduct,governance,rules,meta— governance docsspec— specification documentsproject-session— project session logsreport— report/summary documentstools— general tools referencedevelopment— development processcron— cron job relatedovernight,automated,cluster— ops automationindex— index/catalogue pagesf5-tts,tts,voice— voice/TTS specific (distinct from general audio)latency— latency/performance metricmicrok8s— MicroK8s specificvideo-generation,synthetic-avatar,talking-head— video/avatar generationinvestment,tax— finance/investment analysis
Additional Common Tags (added 2026-05-31)
has-correction,has-instruction,has-tool-error— task quality markerssource-cli,source-api_server,source-cron— content source originlegend,legend-os— Legend OS project referencestask,visual-test,folder-inbox— Mercury task categoriesux,portal,goal-reflection,goals— UX and goal trackingjournal,telemetry,frontend— logging and system metricssvelte,self-improve,rag-alternative— web frameworks and AI patternscycle,workspace,visual-audit— process and workspace categoriestesting,legend-os,qa,smart-groceries,ci— project and quality domainspersona,test-result,vt-006,vt-003,vt-007,vt-005,vt-010— testing IDsmulti-agent— multi-agent system patterns
Hierarchy and Index Rules (2026-04-24)
has-correction,has-instruction,has-tool-error— Mercury task state flagssource-cli,source-cron,source-api_server— Mercury task source originfolder-inbox— inbox/task folder classification
Legend Project Tags (added 2026-05-31)
legend,legend-os— Legend OS project pagesvisual-test,visual-audit— visual testing contentfrontend,svelte,qa,ux,portal— Legend frontend/UX domain
Session & Journal Tags (added 2026-05-31)
session,journal— session and journal content (distinct fromproject-session)goal-reflection,goals— goal tracking and reflection contentcycle— cyclic/recurring pattern
Testing & CI Tags (added 2026-05-31)
visual-test,testing,test-result,qa— testing domainci— continuous integration
Other Common Tags (added 2026-05-31)
research,self-improve,rag-alternative— research and improvementworkspace,persona,telemetry— workspace and persona contentsmart-groceries— Smart Groceries project reference
Hierarchy and Index Rules (2026-04-24)
New Tags Added by Lint (2026-05-06)
animation,avatar,diffusion,video— video/avatar generation domainbacktest,rebalancing,trading-strategy— trading strategy tagsgeopolitics,news-signals— market signals researchcron-session— cron-generated session logsbugs,fixes,infra-fix— operational fix tracking
Remaining Lint Tags (added 2026-06-01)
daily— daily recurring content / daily sessionsmercury— Mercury agent system pagesvt-001throughvt-015— visual test identifiers (full range coverage)entity— entity page type classifiertest— testing content (distinct from specific test tags)services— services directory/contentbug— bug tracking (singular, distinct from pluralbugs)blocked— items that are blocked on external factorsasx-trading— ASX trading project-specific contentpersonas— persona system pageswidget— UI widget componentspost-deploy— post-deployment checklists/notesprovisioning— infrastructure provisioningmattermost— Mattermost chat platformdiagrams— diagram/diagramming contentsignup— user onboarding/signup flowskeyboard— keyboard input/contentdone— completed item indicator
The wiki uses a fixed two-level hierarchy: root → categories → pages. No “flat” root index.
Fixed top-level directories
| Directory | What goes there | Has index.md? |
|---|---|---|
concepts/ | Architectural patterns, techniques (type: concept) | Required |
entities/ | Durable things: tools, services, models, people, systems (type: entity) | Required |
memories/ | Long-term agent memory (USER.md, MEMORY.md) — not for browse | Required, minimal |
projects/ | Active project work with session logs under <slug>/sessions/ | Required |
queries/ | Agent-generated research answers (type: query) | Required |
raw/ | Source material: articles/, web-captures/, team-knowledge/, agent-tool-watch/ | Required at each level |
skills/ | Reusable procedural skills, one per directory with a SKILL.md inside | Required |
All other root-level files are single-purpose specials: index.md, SOUL.md, SCHEMA.md, SETTINGS.md, log.md.
Root index.md — landing-only
Maximum ~30 lines. Contents, in order:
- One-sentence wiki purpose.
- Two prominent links:
[[SOUL.md]](persona),[[SCHEMA.md]](this file). - A single table with the seven top-level categories — one row each, columns: link to
<cat>/index, 1-line description, page count. - Optional “Recent activity” bullet list with 3–5 items from
log.md.
Root index NEVER lists individual pages. It NEVER embeds content from subpages. It is a navigation shim, not a directory.
Category <cat>/index.md — catalogue
Required frontmatter:
---
title: "<Category> Index"
type: entity
tags: [index]
---Body layout:
- One-paragraph description of what lives in this category.
- If the category has subdirectories, a
## Subsectionssection listing each with a link to its own index. - A
## Pagessection listing all direct children of the category, grouped by tag or topic if more than ~20 entries. Each entry:-— short description. - For
projects/index.md: a table — columns Project, Status, Last Session, Link. - For
skills/index.md: grouped by domain (infra / research / communication / dev / meta).
Category indexes are rebuilt mechanically from the directory listing — any page without a link from its category index is an orphan.
Reachability invariant
Every .md file under the wiki must be reachable from /index.md by following wikilinks through at most two intermediate index pages. Equivalent statement: root → category-index → (optional subcategory-index) → leaf-page. Pages with no inbound link from an index are orphans and must be either linked or removed by the lint.
Search flow for Hermes
When Hermes needs to find knowledge:
- Start from
/index.mdto orient — category counts reveal where volume lives. - Route by question type:
- “how do I do X” →
skills/index.md - “what is X / how does X work” →
entities/index.mdorconcepts/index.md - “what did we do on project X” →
projects/<slug>/index.mdthen the newest session - “source / citation for claim X” →
raw/index.mdthen the relevant subcategory - “prior research answer” →
queries/index.md
- “how do I do X” →
- Category indexes group by tag or date — scan those first before full-text search.
- Only full-text search (
skill_view,read_file, grep) after the index flow fails. - When adding a new page, also update its category’s
index.md— the lint will otherwise flag it as an orphan.
What the daily lint enforces
- Root
index.mdis ≤30 lines and contains no individual-page links. - Every directory under the wiki root has an
index.mdwith YAML frontmatter. - Every leaf page is linked from its category index.
- Category index counts match actual page counts.
- Every tag used is present in the Tag Taxonomy above.
Per-project references/ convention
Every project under projects/<name>/ should have a references/
sub-dir capturing external references hermes collected (design refs,
research papers, library docs, blog posts) BEFORE writing code:
projects/smart-groceries/
├── index.md
├── sessions/2026-04-27.md
└── references/
├── grocery-list-app-design.md ← collected via web search
├── design-system-shopify-2026.md ← screenshot + extracted notes
└── shadcn-list-patterns.md
Each reference page has:
- frontmatter
type: reference+tags: [reference]+source_url - the screenshot (PNG path) inline
- vision-extracted design notes (palette hexes, layout, typography, spacing)
- a one-line “what we want to copy” summary
Mode A recipe (autopilot prompt) instructs hermes to populate
references/ first when a project chunk involves frontend work, then
iterate code with compare_to_reference-style vision checks until the
score reaches ≥8/10.
Tiered qdrant: hot / warm / cold
Search performance + relevance scales as the corpus grows by routing points across three collections instead of one:
| Tier | What’s there | When searched |
|---|---|---|
wiki-hot | accessed within the last 7 days | always (first) |
wiki-warm | new content + everything else | if hot misses |
wiki-cold | not accessed for 90+ days | if warm misses |
wiki_search_semantic cascades hot → warm → cold; stops once it has
limit results above the fallthrough score (0.55 by default). Each
hit fires a background payload-set bumping last_accessed_at.
hermes-tier-promotion cron (daily, 03:30 Brisbane) moves points:
- warm → hot when
last_accessed_at >= now-7d - hot → warm when
last_accessed_at < now-7d(idle demotion) - warm → cold when
last_accessed_at < now-90dor never accessed - cold → warm when a search hit revives it (
last_accessed_at >= now-90d)
New content from the indexer lands in wiki-warm (the alias of the
legacy wiki collection — no migration needed).
What stays optimal automatically
hermes-vector-reconcile(hourly): wiki → qdrant idempotent rebuildhermes-wiki-snapshot(every 15 min): wiki → gitlab repohermes-tier-promotion(daily 03:30 Sydney): tier reorganisationhermes-search-quality-eval(Sunday 09:30 Sydney): runs canonical queries and asserts expected pages still surface in top-5. Drops → Slack alert +wiki/log.mdentry. Catches embedder drift, type misclassification, runaway tier collapse.hermes-schema-drift(Sunday 09:35 Sydney): diffsls /wiki/vs the known set invector_lib.detect_type. Files a queue task if a new top-level dir is appearing astype: other.
What to do when search drops
Symptoms hermes (or pvs) might notice:
- semantic search returns mostly emails or sessions instead of skills
type=memoriesfilter returns nothing- expected page (e.g. MEMORY.md) doesn’t surface for queries that should match it
Diagnosis order:
- Check
hermes-search-quality-eval’s last run. If it’s failing, the alert message lists which canonical queries regressed. - Check qdrant point counts per type:
for t in email memories skills sessions concepts entities projects \ queue raw ops queries projects-archived other; do curl -s -X POST http://qdrant.hermes.svc.cluster.local:6333/collections/wiki-warm/points/count \ -H "Content-Type: application/json" \ -d "{\"filter\":{\"must\":[{\"key\":\"type\",\"match\":{\"value\":\"$t\"}}]},\"exact\":true}" \ | jq -r '. as $r | "\(.result.count // 0)\t'"$t"'"' doneothershould be ≤1% of total; if higher, something’s miscategorised. - Check tier sizes:
Hot should be small (~1-10k); warm large (~50-300k); cold whatever’s accumulated. If hot=0 after a week, the access-tracking write isn’t landing — check wiki_search_semantic logs.for c in wiki-hot wiki-warm wiki-cold; do curl -s http://qdrant.hermes.svc.cluster.local:6333/collections/$c \ | jq -r ".result.points_count // \"err\"" | xargs -I N echo "$c: N" done - Force a reconcile to refresh embeddings if the embedder model changed:
kubectl -n hermes create job --from=cronjob/hermes-vector-reconcile reconcile-manual-$(date +%s) - If
detect_typeis missing a new dir, the schema-drift cron files a queue task with the diagnosis. Resolve per the task’s options: recognize, move, or ignore.