{ "version": 1, "last_updated": "2026-04-13T20:00:00Z", "total_facts": 29, "facts": [ { "id": "hermes-agent:pitfall:001", "fact": "deploy-crons.py leaves jobs in mixed model format", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.95, "tags": [ "cron", "deploy", "model", "config" ], "source_count": 5, "first_seen": "2026-04-08", "last_confirmed": "2026-04-13", "related": [ "hermes-agent:pitfall:002", "hermes-agent:pitfall:003" ] }, { "id": "hermes-agent:pitfall:002", "fact": "deploy-crons.py --deploy doesn't set legacy skill field from skills list", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.9, "tags": [ "cron", "deploy", "skills" ], "source_count": 3, "first_seen": "2026-04-09", "last_confirmed": "2026-04-13", "related": [ "hermes-agent:pitfall:001" ] }, { "id": "hermes-agent:pitfall:003", "fact": "Cron jobs with blank fallback_model fields trigger spurious gateway warnings", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.9, "tags": [ "cron", "model", "fallback" ], "source_count": 4, "first_seen": "2026-04-07", "last_confirmed": "2026-04-12", "related": [ "hermes-agent:pitfall:001" ] }, { "id": "hermes-agent:pitfall:004", "fact": "model-watchdog.py checks first provider line, not model.provider - causes false drift alarms", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.9, "tags": [ "watchdog", "model", "config" ], "source_count": 3, "first_seen": "2026-04-08", "last_confirmed": "2026-04-13" }, { "id": "hermes-agent:pitfall:005", "fact": "10+ files read HERMES_HOME directly instead of get_hermes_home()", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.85, "tags": [ "paths", "env", "hermes-home" ], "source_count": 6, "first_seen": "2026-04-06", "last_confirmed": "2026-04-12", "related": [ "global:pitfall:002" ] }, { "id": "hermes-agent:pitfall:006", "fact": "get_hermes_home() doesn't expand tilde when HERMES_HOME=~/... is set", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.8, "tags": [ "paths", "env", "bug" ], "source_count": 2, "first_seen": "2026-04-05" }, { "id": "hermes-agent:pitfall:007", "fact": "vps-agent-dispatch reports OK while remote hermes binary path is broken", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.9, "tags": [ "ssh", "dispatch", "vps" ], "source_count": 4, "first_seen": "2026-04-07", "last_confirmed": "2026-04-11" }, { "id": "hermes-agent:pitfall:008", "fact": "nightwatch-health-monitor SSH check fails on cloud-model-only deployments", "category": "pitfall", "domain": "hermes-agent", "confidence": 0.85, "tags": [ "ssh", "health", "cloud" ], "source_count": 2, "first_seen": "2026-04-10" }, { "id": "the-nexus:pitfall:001", "fact": "Merges fail with HTTP 405 due to branch protection", "category": "pitfall", "domain": "the-nexus", "confidence": 0.95, "tags": [ "git", "merge", "branch-protection", "gitea" ], "source_count": 12, "first_seen": "2026-04-05", "last_confirmed": "2026-04-13", "related": [ "global:pitfall:001" ] }, { "id": "the-nexus:pitfall:002", "fact": "ThreadingHTTPServer required for multi-user bridge - standard HTTPServer blocks on concurrent requests", "category": "pitfall", "domain": "the-nexus", "confidence": 0.95, "tags": [ "server", "concurrency", "bridge" ], "source_count": 5, "first_seen": "2026-04-10", "last_confirmed": "2026-04-13" }, { "id": "the-nexus:pitfall:003", "fact": "ChatLog.log() crashes on message persistence when index.html has orphaned button tags", "category": "pitfall", "domain": "the-nexus", "confidence": 0.9, "tags": [ "html", "crash", "chatlog" ], "source_count": 3, "first_seen": "2026-04-12", "last_confirmed": "2026-04-13" }, { "id": "the-nexus:pitfall:004", "fact": "Three.js LOD not implemented - local hardware struggles with full scene", "category": "pitfall", "domain": "the-nexus", "confidence": 0.85, "tags": [ "threejs", "performance", "lod" ], "source_count": 4, "first_seen": "2026-04-09", "last_confirmed": "2026-04-13" }, { "id": "the-nexus:pitfall:005", "fact": "Duplicate content blocks appear in index.html when PR merges conflict silently", "category": "pitfall", "domain": "the-nexus", "confidence": 0.8, "tags": [ "html", "merge-conflict", "duplicate" ], "source_count": 3, "first_seen": "2026-04-11", "last_confirmed": "2026-04-13" }, { "id": "the-nexus:pitfall:006", "fact": "Unified HTTP + WebSocket server required for proper URL deployment - separate servers break CORS", "category": "pitfall", "domain": "the-nexus", "confidence": 0.9, "tags": [ "deploy", "websocket", "http", "cors" ], "source_count": 4, "first_seen": "2026-04-10", "last_confirmed": "2026-04-13" }, { "id": "global:tool-quirk:001", "fact": "Gitea token stored at ~/.config/gitea/token, not env var GITEA_TOKEN", "category": "tool-quirk", "domain": "global", "confidence": 0.95, "tags": [ "git", "auth", "gitea", "token" ], "source_count": 23, "first_seen": "2026-03-27", "last_confirmed": "2026-04-13", "related": [ "global:pitfall:001" ] }, { "id": "global:tool-quirk:002", "fact": "Gitea API uses 'Authorization: token TOKEN' header format, not Bearer", "category": "tool-quirk", "domain": "global", "confidence": 0.9, "tags": [ "git", "api", "gitea" ], "source_count": 8, "first_seen": "2026-03-28", "last_confirmed": "2026-04-12" }, { "id": "global:tool-quirk:003", "fact": "Gitea Issues API type=issues param does NOT filter PRs", "category": "tool-quirk", "domain": "global", "confidence": 0.95, "tags": [ "gitea", "api", "issues", "pr" ], "source_count": 6, "first_seen": "2026-04-01", "last_confirmed": "2026-04-13" }, { "id": "global:tool-quirk:004", "fact": "~/.hermes is the default hermes home - check get_hermes_home() not the path literal", "category": "tool-quirk", "domain": "global", "confidence": 0.9, "tags": [ "paths", "hermes", "env" ], "source_count": 10, "first_seen": "2026-03-30", "last_confirmed": "2026-04-13", "related": [ "hermes-agent:pitfall:005" ] }, { "id": "global:tool-quirk:005", "fact": "Ansible vault-encrypted vars in YAML require vault_inline_vars plugin", "category": "tool-quirk", "domain": "global", "confidence": 0.85, "tags": [ "ansible", "vault", "config" ], "source_count": 3, "first_seen": "2026-04-02" }, { "id": "global:tool-quirk:006", "fact": "mimo-v2-pro via Nous Research is the default model - don't assume Anthropic is available", "category": "tool-quirk", "domain": "global", "confidence": 0.95, "tags": [ "model", "provider", "nous", "default" ], "source_count": 15, "first_seen": "2026-03-25", "last_confirmed": "2026-04-13" }, { "id": "global:tool-quirk:007", "fact": "Kill + restart with 'hermes chat' preserves old model state - NEVER use --resume", "category": "tool-quirk", "domain": "global", "confidence": 0.95, "tags": [ "hermes", "model", "restart", "session" ], "source_count": 8, "first_seen": "2026-03-29", "last_confirmed": "2026-04-12" }, { "id": "global:pitfall:001", "fact": "Branch protection requires 1 approval on main - API merges fail with 405 without it", "category": "pitfall", "domain": "global", "confidence": 0.95, "tags": [ "git", "merge", "branch-protection", "gitea" ], "source_count": 12, "first_seen": "2026-04-05", "last_confirmed": "2026-04-13", "related": [ "the-nexus:pitfall:001" ] }, { "id": "global:pitfall:002", "fact": "Never use --no-verify on git commits", "category": "pitfall", "domain": "global", "confidence": 0.95, "tags": [ "git", "hooks", "safety" ], "source_count": 5, "first_seen": "2026-03-28", "last_confirmed": "2026-04-13" }, { "id": "global:pitfall:003", "fact": "Gitea PR creation workaround needed on the-nexus - direct API call fails", "category": "pitfall", "domain": "global", "confidence": 0.9, "tags": [ "gitea", "pr", "api", "workaround" ], "source_count": 4, "first_seen": "2026-04-06", "last_confirmed": "2026-04-12" }, { "id": "global:pitfall:004", "fact": "Anthropic is BANNED from fallback chain", "category": "pitfall", "domain": "global", "confidence": 0.95, "tags": [ "provider", "anthropic", "fallback" ], "source_count": 7, "first_seen": "2026-03-30", "last_confirmed": "2026-04-13" }, { "id": "global:pitfall:005", "fact": "Telegram tokens expired - don't assume Telegram notifications work", "category": "pitfall", "domain": "global", "confidence": 0.85, "tags": [ "telegram", "notifications", "token" ], "source_count": 3, "first_seen": "2026-04-02" }, { "id": "global:pitfall:006", "fact": "Multiple gateways = 'cannot schedule futures' error - only one gateway process should run", "category": "pitfall", "domain": "global", "confidence": 0.9, "tags": [ "gateway", "cron", "process" ], "source_count": 4, "first_seen": "2026-04-04", "last_confirmed": "2026-04-11" }, { "id": "global:pitfall:007", "fact": "pytest root collection picks up operational *_test.py scripts - restrict to tests/ directory", "category": "pitfall", "domain": "global", "confidence": 0.9, "tags": [ "pytest", "test", "collection" ], "source_count": 3, "first_seen": "2026-04-07", "last_confirmed": "2026-04-13" }, { "id": "global:pitfall:008", "fact": "TDD: test 1 before building 55", "category": "pitfall", "domain": "global", "confidence": 0.95, "tags": [ "tdd", "testing", "methodology" ], "source_count": 8, "first_seen": "2026-03-25", "last_confirmed": "2026-04-13" } ] }