Files changed: .gitignore CLAUDE.md credentials engine/.embcache.json engine/changelog.md engine/config.yaml engine/lib/__pycache__/agent.cpython-312.pyc engine/lib/agent.py engine/lib/lint.py engine/lint-report.md engine/sweep-full.log engine/sweep.sh vault/.obsidian/graph.json vault/.obsidian/workspace.json vault/INDEX.md vault/archive/projects/mmud/last-ember-chronicle.html vault/archive/projects/mmud/last-ember-howto.html vault/archive/projects/mmud/last-ember.html vault/archive/projects/mmud/mmud-phase5-prompt.md vault/archive/projects/mmud/mmud-phase6-prompt.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/01-update-planned.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/02-npc-nodes.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/03-darkcragg.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/04-dcrg-node.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/05-phase5.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/06-phase6.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/README.md vault/archive/projects/mmud/mmud-prompts/mmud-prompts/mmud-project.md vault/docs/hardware/environment.md vault/docs/hardware/ip-allocation.md vault/docs/matrix/archivist.md vault/docs/matrix/matrix_host.md vault/docs/matrix/mautrix_signal.md vault/docs/matrix/synapse.md vault/docs/matrix/synapse_retention_discovery.md vault/docs/navi/cc-rules.md vault/docs/navi/deployment.md vault/docs/navi/themes.md vault/docs/services/ots-setup.md vault/docs/services/services.md vault/docs/services/usenet.md vault/docs/software/authentik.md vault/docs/software/caddy.md vault/docs/software/dns.md vault/docs/software/geo-tools.md vault/docs/software/recon.md vault/docs/software/searxng.md vault/glossary.md vault/notes/echo6-landing-page-data-export.md vault/notes/ia-download-queue.md vault/plans/vaultwarden-plan.md vault/projects/advbbs-project.md vault/projects/argus.md vault/projects/deploy-livesync.md vault/projects/matrix-synapse-deployment.md vault/projects/meshtastic-headscale-runbook.md vault/projects/mmud-project.md vault/runbooks/add-peertube-channel.md vault/runbooks/authentik-access-groups.md vault/runbooks/authentik-create-invitation.md vault/runbooks/authentik-oidc-application.md vault/runbooks/authentik-upgrade.md vault/runbooks/ct-runbook.md vault/runbooks/edge2-access-reference.md vault/runbooks/expose-service-contabo.md vault/runbooks/expose-service-edge2.md vault/runbooks/expose-service-home.md vault/runbooks/headscale-onboard-node.md vault/runbooks/ia-cli-reference.md vault/runbooks/ia-download-mirror.md vault/runbooks/idahomesh-bridge-setup.md vault/runbooks/idahomesh-vpn-device-setup.md vault/runbooks/lxc-service-migration.md vault/runbooks/mailcow-create-mailbox.md vault/runbooks/meshmonitor-password-reset.md vault/runbooks/meshtastic-sidecar-node.md vault/runbooks/meshtasticd-sim-nodes-runbook.md vault/runbooks/nordvpn-lxc.md vault/runbooks/peertube-remote-runner.md vault/runbooks/pg-backup.md vault/runbooks/pi-nas-omv-runbook.md vault/runbooks/pipeline-patterns.md vault/runbooks/proxmox-create-ubuntu-vm.md vault/runbooks/proxmox-onboard-node.md vault/runbooks/recon-operations.md vault/runbooks/recon-service-integration.md vault/runbooks/syncthing-add-node.md vault/session-resume/SESSION-HANDOFF-meshai-test.md
27 lines
2.4 KiB
Markdown
27 lines
2.4 KiB
Markdown
# 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 1–3 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
|
||
|
||
Triple-synced: Obsidian LiveSync ↔ edge2 CouchDB, Syncthing on `/home/zvx/projects`, and `echo6-docs-autocommit` cron (every 6h → Forge). 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.
|