Зачем: - GNU Stow сворачивал весь ~/.config в пакет zed и помещал рабочие настройки в репозиторий. Что: - добавлена ограниченная миграция старой ссылки с возвратом данных в домашний каталог; - предотвращено повторное сворачивание ~/.config на свежей установке; - добавлены проверки сохранности профиля, повторного запуска и чужих ссылок. Проверка: - bash tests/test_install.sh - bash -n install.sh tests/test_install.sh - git diff --check
3.5 KiB
Handoff: владение ~/.config исправлено, задача 05 готова к приёмке
Обновлён: 2026-07-21 08:18 EDT.
Состояние задачи 05
Автоматическая часть headless-xray-proxy зафиксирована коммитом fd8210d.
Тикет .scratch/headless-xray-proxy/issues/05-package-delivery-and-acceptance.md
находится в ready-for-human; результаты тестов и команды ручной приёмки уже
записаны там. Дальше можно продолжать ручную приёмку по этому тикету.
Исправленный дефект stow
Корневая причина была в сворачивании GNU Stow: в пустом домашнем каталоге пакет
zed создавал общую ссылку ~/.config -> ~/dotfiles/zed/.config. После этого
рабочие настройки приложений и закрытый профиль Xray физически попадали внутрь
репозитория.
install.sh теперь:
- заранее создаёт настоящий каталог
~/.config, поэтому свежая установка создаёт только ссылку~/.config/zed; - распознаёт старую ссылку лишь при точном совпадении с
$DOTFILES_DIR/zed/.config; - оставляет управляемый каталог
zedв пакете, а остальные верхнеуровневые элементы переносит в настоящий~/.config; - до первого переноса проверяет, что смог полностью перечислить данные;
- при штатной ошибке переноса возвращает уже перемещённые элементы назад;
- не раскрывает произвольные ссылки
~/.config.
В tests/test_install.sh добавлены проверки свежей установки, миграции с
вымышленным секретом, сохранения прав 600, отсутствия секрета в выводе,
повторного запуска и неприкосновенности произвольной ссылки.
Проверка и живое состояние
Полный набор bash tests/test_xray_proxy_full.sh прошёл на системном Python и
Python 3.8 через uv: по 79 Python-тестов, 8 проверок командной оболочки и тесты
установщика. Синтаксис сценариев командной оболочки и git diff --check также
прошли.
Миграция применена к текущему домашнему каталогу:
~/.config— настоящий каталог;~/.config/zedуказывает на пакет Zed;- в
zed/.configостался только каталогzed; - рабочие каталоги приложений находятся в
~/.config; ~/.config/xray-proxy/default.url— обычный файл вне репозитория, сохранил права600и одну непустую строку. Содержимое профиля не выводилось.
Текущее состояние Git
Не включать в коммиты посторонние неотслеживаемые
agents/.agents/.skill-lock.json и scripts/setup-xray-proxy.sh.