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

DirectoryFilesClassificationAction
cluster-ops/3 session logsproject sessions→ projects/cluster-ops/sessions/
feedback/3 entriesconcept (feedback)→ concepts/feedback-* or archive
hermes/1 (goals.md)concept→ concepts/hermes-goals.md
ops/1 overnight noteproject session→ projects/cluster-ops/sessions/
runbooks/3 operational docsconcept (runbook)→ concepts/runbooks-* or own type
tasks/3 task filesqueue duplicatemerge into queue/ or redirect
queries/2 (index + research)concept/query→ concepts/queries/
sessions/1 session logproject session→ projects/*/sessions/
agents/, autonovel/, email/, voice/emptyunused scaffolddelete or populate
projects-archived/, proposed-manifests/emptystale scaffoldsarchive or delete

Remediation Steps

  1. Create learnings/ directory if missing
  2. Migrate content from unrecognized dirs to proper locations
  3. Update vector_lib.detect_type() if new schema types are genuinely needed (e.g., runbooks as first-class type)
  4. Delete empty scaffolds
  5. Verify no orphans in concepts/index.md after migration