Mercury Schema Drift Detection
Discovered: 2026-05-06 (15 unrecognized top-level wiki dirs)
The Problem
vector_lib.detect_type() classifies wiki pages based on directory path. Unrecognized directories return None, causing vector embedding failures or mis-indexing.
Standard Wiki Directories
/opt/data/wiki/
concepts/ # Reference docs (SCHEMA type: concept)
entities/ # External services, people, systems (type: entity)
projects/ # Project tracking (type: project)
queue/ # Active/done task cards (type: task)
memories/ # Agent persistent memory (type: memory)
raw/ # Immutable captures, articles, verifier logs (type: raw)
skills/ # Skill definitions (type: skill)
archive/ # Archived pages by year (type: archive)
learnings/ # ← MISSING — should exist for lessons learned
Detection Method
List top-level wiki directories and compare against known schema:
wiki_root = "/opt/data/wiki"
known_dirs = {'concepts', 'entities', 'projects', 'queue', 'memories',
'raw', 'skills', 'archive', 'learnings'}
unrecognized = [d for d in os.listdir(wiki_root)
if os.path.isdir(os.path.join(wiki_root, d)) and d not in known_dirs]2026-05-06 Drift Snapshot
| Directory | Files | Classification | Action |
|---|---|---|---|
| cluster-ops/ | 3 session logs | project sessions | → projects/cluster-ops/sessions/ |
| feedback/ | 3 entries | concept (feedback) | → concepts/feedback-* or archive |
| hermes/ | 1 (goals.md) | concept | → concepts/hermes-goals.md |
| ops/ | 1 overnight note | project session | → projects/cluster-ops/sessions/ |
| runbooks/ | 3 operational docs | concept (runbook) | → concepts/runbooks-* or own type |
| tasks/ | 3 task files | queue duplicate | merge into queue/ or redirect |
| queries/ | 2 (index + research) | concept/query | → concepts/queries/ |
| sessions/ | 1 session log | project session | → projects/*/sessions/ |
| agents/, autonovel/, email/, voice/ | empty | unused scaffold | delete or populate |
| projects-archived/, proposed-manifests/ | empty | stale scaffolds | archive or delete |
Remediation Steps
- Create
learnings/directory if missing - Migrate content from unrecognized dirs to proper locations
- Update
vector_lib.detect_type()if new schema types are genuinely needed (e.g., runbooks as first-class type) - Delete empty scaffolds
- Verify no orphans in concepts/index.md after migration