Wiki Maintenance

Workflow for keeping the Hyraxknot Division wiki fresh. Owned by Nei (Quartermaster).

Cadence

Frequency Activity Owner
Daily Auto-sync: git commit + push (7am cron) wiki-daily-sync
Weekly (Mon 9am) wiki-stale-scan cron: scan → kanban refresh cards Nei + owning sisters
Monthly Full content audit + rebuild Nei

Content Refresh Pipeline (since 2026-08-03)

Stale flags are actionable cards, not warnings. Flow:

  1. wiki-stale-scan cron (Mon 9am, agent job) runs wiki_stale_scan.py — flags content docs 8+ days stale, excludes noise (standups, sessions/, READMEs, index/log/SCHEMA, rescue artifacts).
  2. The cron agent maps each stale doc to its owning sister via /root/.hermes/profiles/nei/scripts/wiki_content_owners.json and creates a kanban card: Wiki refresh: <path> (<N>d stale), assignee = owner, priority 3.
  3. Idempotency key wiki-refresh-<path-with-dashes> prevents duplicate cards on re-runs.
  4. Cap 10 new cards per run, stalest first — the backlog drains over successive weeks.
  5. Owning sister refreshes the page (verify claims, bump updated:, fix paths), updates index.md/log.md if summaries change, rebuilds.

Unknown/uncarded pages default to nei. Incident postmortems and dated changelogs are skipped (historical by design).

Stale Scan

Run a freshness check against all wiki .md files:

python3 -c "
import os, time
wiki = '/root/workspace/wiki'
now = time.time()
for root, dirs, files in os.walk(wiki):
    dirs[:] = [d for d in dirs if not d.startswith('.')]
    for f in files:
        if f.endswith('.md'):
            path = os.path.join(root, f)
            days = (now - os.path.getmtime(path)) / 86400
            rel = os.path.relpath(path, wiki)
            if days < 3: print(f'  Fresh   {rel}')
            elif days < 10: print(f'  Recent  {rel}')
            else: print(f'  Stale   {rel} ({int(days)}d)')
"
Age Label Action
Today-3 days Fresh ✅ No action
3-10 days Recent ✅ Quick skim
10+ days 🟡 Stale Full verification
30+ days 🟠 Very stale High priority verify

Content Verification

For each 🟡 flagged doc:

  1. Read the full doc
  2. Verify claims against live state — run commands, check configs, stat files
  3. Update frontmatter updated date
  4. Fix stale paths, commands, descriptions
  5. Add markdown links to related docs where appropriate

Key cross-references to verify periodically:

  • entities/caddy-routes.md → check against /etc/caddy/Caddyfile
  • entities/homelab-fleet.md → verify against Proxmox guest list
  • entities/hermes-cron-architecture.md → check cron-registry.json
  • entities/hermes-webui.md → verify against live instance
  • concepts/preferences-boundaries.md → check Josh’s current preferences

Build & Deploy

cd /root/workspace/wiki-site
docmd build
echo "Pages: $(find dist -name 'index.html' | wc -l)"

Deploy: docmd build && cp -r dist/* /var/www/wiki/

Git Discipline

cd /root/workspace/wiki
git add -A
git commit -m "wiki: <summary> - $(date +%F)"
git push

The wiki-daily-sync cron at 7am catches anything missed, but commit immediately after content changes.

Index & Log

  • index.md — Must be updated whenever pages are added or removed. Lists every page with description.
  • log.md — Append-only changelog. Format: ## [YYYY-MM-DD] action | subject. Never overwrite.
  • Docmd Wiki — how the wiki is built and deployed
  • Wiki Editing Guide — conventions for editors
  • nei-quartermaster skill — full wiki maintenance workflow