echo6-docs/CLAUDE.md
echo6-autocommit 7320ad2741 auto: docs sync 2026-06-19T06:00:06+00:00
Files changed: CLAUDE.md engine/lint-report.md vault/.obsidian/workspace.json
2026-06-19 06:00:06 +00:00

2.5 KiB
Raw Blame History

Echo6 Docs Vault — Claude Guidelines

This repo (echo6-docs, canonical on Forge) is both an Obsidian documentation vault (vault/) and its self-contained maintenance engine (engine/).

The documentation model

  • Documentation library only. Do NOT create entity/concept/node pages or stubs — nothing exists just to be a graph dot.
  • Tags = categories. Each doc carries 13 honest category tags in frontmatter. Default to ONE; add a second only if the doc is genuinely about two co-equal subjects. The tag vocabulary lives in engine/config.yaml (topic_categories).
  • Inline [[wikilinks]] point ONLY to existing docs. Never link to a non-existent target (zero unresolved/red nodes). If a thing has no doc, leave it as plain text.
  • No INDEX.md — tags organize, not a hub.
  • Frontmatter: title, type, tags, related, updated (+ optional aliases, status). type ∈ reference|runbook|project|note|session.

The engine (engine/) — how it works

  • Runs on cortex RTX A4000. Tagger = vault-tagger (Qwen2.5-7B-Instruct) via Ollama (localhost:11434); embeddings = bge-m3 via TEI (localhost:8090) for related:. Pure stdlib HTTP, no cloud.
  • Daily cron at 09:00 UTC (GPU-guarded): engine/sweep.sh → lint + tag + link changed docs. Internals: engine/sweep.sh, engine/lib/agent.py, engine/lib/lint.py, engine/config.yaml.
  • Symlink guard: agent.py skips symlinks (os.path.islink); sweep.sh uses find -type f to exclude them. vault/CLAUDE-baseline.md and vault/rules/ are symlinks to ~/.claude/ — the engine skips them automatically.
  • Run manually: python3 engine/lib/agent.py <doc> (one doc), engine/sweep.sh (changed docs), engine/sweep.sh --all.
  • Lint (engine/lib/lint.py): dead links (stay 0), untagged docs, orphans, unknown tags, gap report (terms across many docs with no own doc — Matt decides whether to create one).

Going forward

When you ADD or EDIT a doc: honest category tags, [[wikilink]] only existing docs, no invented pages. The gap report (engine/lib/lint.py) surfaces candidates for new docs; the next sweep links mentions once a doc exists.

Sync & safety

Double-synced: Obsidian LiveSync ↔ edge2 CouchDB, and echo6-docs-autocommit cron (every 6h → Forge). (Syncthing was decommissioned 2026-06-19 — service masked, local state removed; Forge is the durable backup.) Mass file ops require care — commits happen automatically. Secrets live in credentials (the one documented exception to no-secrets-in-repo); never put secrets in a graph-tracked doc.