diff --git a/family/documents/vault-sync/2026-09-15-index-md-syncthing-conflict.md b/family/documents/vault-sync/2026-09-15-index-md-syncthing-conflict.md new file mode 100644 index 00000000..3ee8a072 --- /dev/null +++ b/family/documents/vault-sync/2026-09-15-index-md-syncthing-conflict.md @@ -0,0 +1,68 @@ +--- +title: 2026-09-15 — Syncthing-конфликт family/index.md и битая wikilink после переименования +tags: [vault, sync, syncthing, git] +created: 2026-09-15 +--- + +# 2026-09-15: конфликт `family/index.md` (Syncthing) + битая wikilink после rename + +## Симптом +При плановом прогоне sync (05:45 UTC) в коммите появился новый файл-конфликт Syncthing: + +``` +create mode 100644 family/index.sync-conflict-20260915-124537-XJRJQB2.md +``` + +Имя = `12:45:37` локального времени (UTC+7) → 05:45:37 UTC, т.е. расхождение обнаружено +демоном Syncthing в момент прогона. В том же коммите (фаза `syncthing`, телефон) прошло +переименование `family/documents/altai-shopping.md → bring-to-altai.md` и удаление +8 старых заметок `vault-sync-*` / `vault-sync-log-*`. + +## Разбор: какая версия главнее +`diff family/index.md family/index.sync-conflict-20260915-124537-XJRJQB2.md`: + +| Строка | `index.md` (оставлена) | конфликтная копия | +|---|---|---| +| 21 | `[[family/documents/altai-shopping\|Алтай — купить]]` — **битая** после rename | `[[bring-to-altai\|Алтай — купить]]` — корректная | +| 39–40 | абзац с координатами дома (`55.257328, 83.048234`, 2ГИС, ДНП «Лаки Парк») — **есть** | отсутствует | +| 133 | описание `home-automation-wishlist` («роадмап автоматизаций + девайсы») — **есть** | сокращённый заголовок «🏡 Home automation» | + +`index.md` — надмножество по содержанию (157 строк против 155), поэтому оставлена она. +Конфликтная копия не добавляет ничего, кроме поправки ссылки. + +## Сделано +1. **`family/index.md`, стр. 21:** ссылка поправлена на `[[family/documents/bring-to-altai|Алтай — купить]]`. + Питфолл: `bring-to-altai.md` имеет alias `altai-shopping`, но **alias не спасает + ссылку с путём** — `[[папка/имя]]` резолвится по файлу, а не по alias. Алиасы работают + только для короткой формы `[[имя]]`. +2. Проверено, что `altai-shopping.md` физически отсутствует (`ls family/documents | grep altai`), + а `personal/projects/personal-os/obsidian-vault-strategy.md:182` содержит лишь + упоминание внутри ASCII-схемы, не wikilink — править не нужно. +3. Коммит `8197a62` `taiga-vault: family/index.md`, запушен в bare; все три клона + (`/vault`, `/vault.git`, `/obsidian-syncthing`) на одном коммите, рабочие деревья чистые. + +## Осталось / решение Алексея +- Файл `family/index.sync-conflict-20260915-124537-XJRJQB2.md` **не удалён** — оставлен на + диске и в git как артефакт. Содержимое полностью покрыто `index.md`, можно удалять + (в Obsidian или `git rm`). Ранее уже висит такой же хвост: + `family/documents/bring-to-russia.sync-conflict-20260831-161030-C6DYBCZ.md` (от 31.08). +- Корневая причина повторов: `family/index.md` пишут **обе** стороны (телефон через + Syncthing и агент), при этом агентская версия выигрывает по объёму и «откатывает» + правки телефона. Если конфликты по `index.md` будут повторяться — либо перестать + править `index.md` с телефона, либо вынести оглавление в раздельные файлы + (например `index-family.md` / `index-personal.md`), чтобы не пересекаться на одном файле. + +## Проверка целостности (05:46 UTC) +```bash +for d in /vault /vault.git /obsidian-syncthing; do git -C $d log --oneline -1; done +git -C /vault status --porcelain # пусто +git -C /obsidian-syncthing status --porcelain # пусто +grep -c "No such file or directory" /tmp/vault-sync.log # 0 +grep "Pushed ✓" /tmp/vault-sync.log | tail -3 +``` +Результат: все три фазы `Pushed ✓`, exit 0, одноимённые HEAD, дерево чистое. + +## Связанные заметки +- [[family/how-to/vault-sync-pipeline]] — архитектура трёх звеньев +- [[2026-09-02-dubious-ownership-and-merge-cleanup]] +- [[family/index]]