Files
memory-os/references/webdav-migration.md
T
2026-09-06 13:51:22 +00:00

32 lines
2.0 KiB
Markdown

# WebDAV Migration & Sync Pipeline Fix — 2026-07-16
## Change: s3fs → WebDAV as Obsidian Vault Source
**Problem:** The s3fs mount at `/opt/hermes/obsidian-vault/` (via Garage S3 `s3.nixg.ru`) was empty — only `.` and `..` in the directory, no actual files. sync_obsidian_to_wiki.py couldn't copy anything. C1 was blocked.
**Diagnosis:**
- `/etc/fstab` had s3fs entry pointing at `s3.nixg.ru` (Garage)
- `mount | grep s3fs` showed the mount was active but directory contained 0 files
- `/mnt/yandex-disk/` (Yandex Disk via davfs2 WebDAV) had a working `obsidian/mozg/` vault with 65 .md files
**Fix:** Changed `OBSIDIAN_VAULT` from `/opt/hermes/obsidian-vault` to `/mnt/yandex-disk/obsidian/mozg/`.
**First run:** 74 files copied in 44 seconds, 0 errors.
## Blocker 2: sync → ingest chain broken
**Symptom:** The sync script finishes copying, then tries to call `wiki_continuous_ingest.py` with bare `python3` — crashes with `ModuleNotFoundError: No module named 'arq'`.
**Root cause:** `sync_obsidian_to_wiki.py` line 162 does `os.system(f"python3 {ingest_script}")`. System python3 does NOT have `arq` (only installed in project `.venv/`).
**Fix:** Changed to `/opt/hermes/memory-os/.venv/bin/python3 {ingest_script}`.
## Safety Guarantee
The user explicitly asked for protection against Hermes deleting files in their Obsidian vault. Confirmed:
- **Code-level:** sync_obsidian_to_wiki.py only reads source (via `os.walk()` + `copy2()`). All deletions (`unlink()`) target `WIKI_TARGET`, never `OBSIDIAN_VAULT`. This was true before the change and remains true after.
- **Filesystem-level:** davfs2 mounts with `file_mode=600` — the user process itself can only write with explicit sudo. The sync script runs as user `estorozhenko`.
- **Memory-level:** Added read-only guarantee to user profile.
**Lesson:** When the user expresses concern about data safety, (1) show code evidence that it's already safe, (2) add explicit protection in memory/skill, (3) explain trade-offs (read-only mount vs full POSIX) so they can make informed decisions.