fix(install): исправлено владение каталогом .config
Зачем: - GNU Stow сворачивал весь ~/.config в пакет zed и помещал рабочие настройки в репозиторий. Что: - добавлена ограниченная миграция старой ссылки с возвратом данных в домашний каталог; - предотвращено повторное сворачивание ~/.config на свежей установке; - добавлены проверки сохранности профиля, повторного запуска и чужих ссылок. Проверка: - bash tests/test_install.sh - bash -n install.sh tests/test_install.sh - git diff --check
This commit is contained in:
1 parent
fd8210db71
commit
e5323284a8
3 files changed
+231
-48
No files matched your search
@@ -1,62 +1,54 @@
|
||||
# Handoff: headless-xray-proxy — задача 05 готова к ручной приёмке
|
||||
# Handoff: владение `~/.config` исправлено, задача 05 готова к приёмке
|
||||
|
||||
Дата: 2026-07-21 07:43 EDT. Заменяет прежние handoff задачи 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`. Автоматическая часть выполнена; продуктовый CLI
|
||||
менять не потребовалось.
|
||||
находится в `ready-for-human`; результаты тестов и команды ручной приёмки уже
|
||||
записаны там. Дальше можно продолжать ручную приёмку по этому тикету.
|
||||
|
||||
## Что изменено
|
||||
## Исправленный дефект stow
|
||||
|
||||
- Корневой `README.md` описывает готовый управляемый Xray и отдельное
|
||||
подключение через `stow xray-proxy`.
|
||||
- `xray-proxy/README.md` явно фиксирует отсутствие systemd, автозапуска и
|
||||
автоматического перехода между прокси.
|
||||
- `tests/test_xray_proxy_full.sh` запускает полный набор под системным Python и
|
||||
CPython 3.8 через `uv`, а также Bash-тесты и проверку установки.
|
||||
- Поддельный Xray в `tests/test_xray_proxy_managed.py` сохраняет отдельный
|
||||
исполняемый файл и получает доступ к библиотекам исходного Python. Это
|
||||
устраняет ложные падения переносимой сборки `uv`, не ломая тест удалённого
|
||||
исполняемого файла.
|
||||
- `tests/test_install.sh` создаёт тестовые деревья только из отслеживаемых
|
||||
Git-файлов внутри одного временного каталога и удаляет его при выходе.
|
||||
Корневая причина была в сворачивании GNU Stow: в пустом домашнем каталоге пакет
|
||||
`zed` создавал общую ссылку `~/.config -> ~/dotfiles/zed/.config`. После этого
|
||||
рабочие настройки приложений и закрытый профиль Xray физически попадали внутрь
|
||||
репозитория.
|
||||
|
||||
## Проверка
|
||||
`install.sh` теперь:
|
||||
|
||||
`bash tests/test_xray_proxy_full.sh` завершился с кодом 0:
|
||||
- заранее создаёт настоящий каталог `~/.config`, поэтому свежая установка
|
||||
создаёт только ссылку `~/.config/zed`;
|
||||
- распознаёт старую ссылку лишь при точном совпадении с
|
||||
`$DOTFILES_DIR/zed/.config`;
|
||||
- оставляет управляемый каталог `zed` в пакете, а остальные верхнеуровневые
|
||||
элементы переносит в настоящий `~/.config`;
|
||||
- до первого переноса проверяет, что смог полностью перечислить данные;
|
||||
- при штатной ошибке переноса возвращает уже перемещённые элементы назад;
|
||||
- не раскрывает произвольные ссылки `~/.config`.
|
||||
|
||||
- системный Python 3.14: 79 тестов, `OK`;
|
||||
- Bash-интеграция: 8 проверок, `PASS`;
|
||||
- установка: `All install tests passed`, остатков `dotfiles-install-test.*` в
|
||||
`/tmp` нет;
|
||||
- CPython 3.8.20 через `uv`: 79 тестов, `OK`.
|
||||
В `tests/test_install.sh` добавлены проверки свежей установки, миграции с
|
||||
вымышленным секретом, сохранения прав `600`, отсутствия секрета в выводе,
|
||||
повторного запуска и неприкосновенности произвольной ссылки.
|
||||
|
||||
Двухосевое ревью относительно `92cf339`:
|
||||
## Проверка и живое состояние
|
||||
|
||||
- Standards: 3 документационных замечания исправлены, повторная проверка PASS;
|
||||
- Spec: 2 документационных замечания исправлены, повторная проверка PASS;
|
||||
- запахов кода и незапрошенного расширения области не найдено.
|
||||
Полный набор `bash tests/test_xray_proxy_full.sh` прошёл на системном Python и
|
||||
Python 3.8 через `uv`: по 79 Python-тестов, 8 проверок командной оболочки и тесты
|
||||
установщика. Синтаксис сценариев командной оболочки и `git diff --check` также
|
||||
прошли.
|
||||
|
||||
## Что осталось пользователю
|
||||
Миграция применена к текущему домашнему каталогу:
|
||||
|
||||
Выполнить ручные команды из раздела `## Comments` тикета 05:
|
||||
- `~/.config` — настоящий каталог;
|
||||
- `~/.config/zed` указывает на пакет Zed;
|
||||
- в `zed/.config` остался только каталог `zed`;
|
||||
- рабочие каталоги приложений находятся в `~/.config`;
|
||||
- `~/.config/xray-proxy/default.url` — обычный файл вне репозитория, сохранил
|
||||
права `600` и одну непустую строку. Содержимое профиля не выводилось.
|
||||
|
||||
1. На доступной Ubuntu с Python 3.10 — установка, жизненный цикл,
|
||||
`xray run -test`, HTTP и SOCKS через один локальный вход.
|
||||
2. На РЕД ОС, Astra Linux или Alt Linux по доступности — тот же сценарий после
|
||||
проверки версии Python.
|
||||
## Текущее состояние Git
|
||||
|
||||
В отчёт не копировать VLESS-ссылку, UUID, ключи, `shortId`, `path` и
|
||||
сгенерированный JSON. Достаточно версии системы/Python, кодов возврата и итога
|
||||
HTTP/SOCKS. Недоступную систему отметить как неподтверждённую.
|
||||
|
||||
## После ручного результата
|
||||
|
||||
1. Отметить только фактически выполненные пункты тикета 05.
|
||||
2. Обновить статус исходного дизайна и заявления о поддержке.
|
||||
3. Обновить или удалить этот handoff.
|
||||
4. По навыку `implement` выполнить итоговую проверку и conventional commit.
|
||||
|
||||
До ручной приёмки коммита задачи 05 нет.
|
||||
Не включать в коммиты посторонние неотслеживаемые
|
||||
`agents/.agents/.skill-lock.json` и `scripts/setup-xray-proxy.sh`.
|
||||
Reference in new issue
Block a user