test(xray-proxy): добавлена полная проверка Python 3.8
- Зачем: - требовалось подтвердить нижнюю версию Python и исключить переполнение /tmp тестовыми данными. - Что: - добавлен полный прогон под системным Python и CPython 3.8 через uv. - исправлены переносимость тестового Xray, уборка временных файлов и документация задачи 05. - добавлен список локальных навыков, исключаемых из Git. - Проверка: - bash tests/test_xray_proxy_full.sh.
This commit is contained in:
1 parent
92cf3397da
commit
fd8210db71
10 files changed
+234
-127
No files matched your search
@@ -1,36 +1,103 @@
|
||||
# 05 — Доставка пакета и итоговая приёмка
|
||||
|
||||
**What to build:** Завершённая прокси-подсистема устанавливается отдельно или
|
||||
вместе с dotfiles, снабжена безопасными шаблонами и понятной инструкцией, а её
|
||||
заявленные сценарии подтверждены автоматическими и доступными системными
|
||||
проверками.
|
||||
**What to build:** Поставка `xray-proxy` проверена целиком: корневой обзор
|
||||
соответствует готовым возможностям, автоматические проверки воспроизводимы, а
|
||||
ручная приёмка на доступных системах подготовлена для пользователя.
|
||||
|
||||
**Blocked by:** 03 — Безопасный жизненный цикл управляемого процесса; 04 —
|
||||
Проверяемая пользовательская установка Xray.
|
||||
**Blocked by:** 03 — безопасный жизненный цикл; 04 — проверяемая установка.
|
||||
|
||||
**Status:** ready-for-agent
|
||||
**Status:** ready-for-human
|
||||
|
||||
- [ ] Самостоятельный stow-совместимый пакет доставляет CLI, Bash-модуль и
|
||||
вымышленные шаблоны машинного INI и VLESS-профиля; реальные пользовательские
|
||||
настройки, UUID, ссылки и ключи не входят в репозиторий.
|
||||
- [ ] Пакет можно подключить отдельно через stow, эквивалентные ручные симлинки
|
||||
или копирование; общий установщик использует тот же пакет без отдельной
|
||||
реализации и сохраняет повторяемость установки.
|
||||
- [ ] Основная инструкция объясняет внешний Hiddify и управляемый Xray,
|
||||
подготовку двух файлов настройки, все команды управления, `proxy_on/off`,
|
||||
`pclaude/pcodex`, `NO_PROXY`, ограничения CIDR и диагностику.
|
||||
- [ ] Инструкция фиксирует две поддержанные семьи VLESS, Xray 26.3.27,
|
||||
современную проверку сертификата и отсутствие systemd, автозапуска и
|
||||
автоматического перехода между типами прокси.
|
||||
- [ ] Корневой обзор кратко описывает подсистему, показывает подключение пакета
|
||||
и направляет к полной инструкции, не дублируя её.
|
||||
- [ ] Полный автоматический прогон подтверждает Python 3.8-совместимый синтаксис,
|
||||
внешний Hiddify-сценарий, обе семьи VLESS, Xray 26.3.27, установку,
|
||||
жизненный цикл, Bash-интеграцию и отсутствие утечки секретов.
|
||||
- [ ] На доступной Ubuntu с Python 3.10 проверены установка, `xray run -test` и
|
||||
работа HTTP и SOCKS через один локальный вход для Xray 26.3.27.
|
||||
- [ ] На целевой удалённой системе выполнен тот же пользовательский сценарий;
|
||||
версия Python в РЕД ОС проверена до заявления поддержки, а недоступная среда
|
||||
явно записана как неподтверждённая вместо неподкреплённого обещания.
|
||||
- [ ] После приёмки статус исходной спецификации и документация соответствуют
|
||||
фактически подтверждённому объёму, включая все оставшиеся ограничения.
|
||||
## Границы задачи
|
||||
|
||||
Тикеты 03/04/06 уже доставили CLI, Bash-модуль, установку и жизненный цикл.
|
||||
Задача 05 их проверяет, но не переписывает. Источники истины:
|
||||
|
||||
- [`xray-proxy/README.md`](../../../xray-proxy/README.md) — пользовательские
|
||||
команды, настройка и ограничения;
|
||||
- [исходный дизайн](../../../docs/specs/2026-07-15-headless-xray-proxy-design.md)
|
||||
— границы и принятые решения.
|
||||
|
||||
- [x] Корневой `README.md` кратко описывает внешний Hiddify и управляемый Xray,
|
||||
показывает `stow xray-proxy` и ссылается на полную инструкцию.
|
||||
- [x] Пакет подключается через stow, ручные ссылки или копирование; общий
|
||||
установщик использует тот же пакет.
|
||||
- [x] Инструкция покрывает две семьи VLESS, Xray 26.3.27, отсутствие systemd,
|
||||
автозапуска и автоматического перехода между прокси.
|
||||
- [x] Тест
|
||||
`ManagedXrayCliTest.test_exact_boolean_version_alpn_and_extra_branches`
|
||||
подтверждает, что устаревшие `allowInsecure`/`insecure` не попадают в
|
||||
TLS-конфиг, а истинное значение даёт предупреждение.
|
||||
|
||||
## Секретные данные
|
||||
|
||||
- [x] В отслеживаемых файлах, тестовых данных, аргументах, выводе и отчёте нет
|
||||
настоящих VLESS-ссылок, UUID, ключей, `shortId` и `path`. Автоматические тесты
|
||||
используют только вымышленные контрольные значения. Настоящий профиль и
|
||||
сгенерированный JSON остаются в закрытых пользовательских файлах и не
|
||||
копируются в отчёт.
|
||||
|
||||
## Автоматическая проверка
|
||||
|
||||
- [x] `tests/test_xray_proxy_full.sh` запускает весь Python-набор под системным
|
||||
`python3` и CPython 3.8 через `uv`, затем Bash-тесты и проверку установки.
|
||||
- [x] Тестовый Xray остаётся отдельным исполняемым файлом и получает доступ к
|
||||
библиотекам исходного Python. Это устраняет ложные падения переносимой сборки
|
||||
`uv`, не ослабляя проверки личности процесса.
|
||||
- [x] `tests/test_install.sh` собирает небольшие тестовые деревья только из
|
||||
отслеживаемых Git-файлов и удаляет общий временный каталог при выходе.
|
||||
|
||||
## Приёмка пользователем
|
||||
|
||||
Исполнитель готовит команды и останавливается. Результат отмечает пользователь;
|
||||
недоступная система остаётся неподтверждённой.
|
||||
|
||||
- [ ] Ubuntu с Python 3.10: установка, жизненный цикл, `xray run -test`, HTTP и
|
||||
SOCKS через один локальный вход Xray 26.3.27.
|
||||
- [ ] РЕД ОС, Astra Linux или Alt Linux по доступности: тот же сценарий после
|
||||
проверки фактической версии Python.
|
||||
|
||||
## После приёмки
|
||||
|
||||
- [ ] Статус исходного дизайна и заявления о поддержке приведены в соответствие
|
||||
только с фактически выполненными прогонами.
|
||||
|
||||
## Comments
|
||||
|
||||
### 2026-07-21 — автоматическая проверка
|
||||
|
||||
`bash tests/test_xray_proxy_full.sh` завершился с кодом 0:
|
||||
|
||||
- системный Python 3.14: 79 тестов, `OK`, 57,276 с;
|
||||
- Bash-интеграция: 8 проверок, `PASS`; `shellcheck` отсутствует и явно пропущен;
|
||||
- установка: `All install tests passed`; в `/tmp` не осталось каталогов
|
||||
`dotfiles-install-test.*`;
|
||||
- CPython 3.8.20 через `uv`: 79 тестов, `OK`, 51,412 с.
|
||||
|
||||
### 2026-07-21 — команды ручной приёмки
|
||||
|
||||
В первой панели tmux, после подготовки закрытого `default.url` и машинного
|
||||
конфига с `type = xray`:
|
||||
|
||||
```bash
|
||||
python3 --version
|
||||
cd ~/dotfiles
|
||||
stow xray-proxy
|
||||
source ~/.config/xray-proxy/shell.bash
|
||||
xray-proxy install
|
||||
xray-proxy start
|
||||
```
|
||||
|
||||
Во второй панели, пока `start` работает:
|
||||
|
||||
```bash
|
||||
xray-proxy status
|
||||
xray run -test -c "${XDG_STATE_HOME:-$HOME/.local/state}/xray-proxy/client.json"
|
||||
curl --proxy http://127.0.0.1:12334 https://api.ipify.org
|
||||
curl --proxy socks5h://127.0.0.1:12334 https://api.ipify.org
|
||||
xray-proxy stop
|
||||
```
|
||||
|
||||
Если настроен другой локальный адрес или порт, те же значения подставляются в
|
||||
обе команды `curl`. В отчёт записываются только версии, коды возврата и итог
|
||||
проверки HTTP/SOCKS.
|
||||
@@ -77,6 +77,12 @@ Claude-доля — 61k суммарно (TASK-ревью + перепровер
|
||||
| 03 | medium | ~636k + 77k | 80.5k | 4 (гонки) |
|
||||
| 04 | medium | ~822k + 135k | 61k | 2 (1 — вина постановки) |
|
||||
|
||||
## Задача 05 — доставка пакета и приёмка
|
||||
|
||||
| Этап | Агент / модель | Effort | Токены | Прочее |
|
||||
|---|---|---|---|---|
|
||||
| 05: ревью постановки, попытки 1–2 (убиты) | Codex gpt-5.6-sol | high | расход токенов потерян (нет `turn.completed`) | обе умерли на `Quota exceeded (os error 122)`: набор `test_install.sh` заполнял `/tmp` тестовыми деревьями по ~1,8 ГБ; потеряно ~2 и ~10 мин работы, сеансы невосстановимы из-за сбоя журнала |
|
||||
|
||||
## Наблюдения
|
||||
|
||||
- Кэш у Codex покрывает ~93% входа ревью-этапа: длинные треды с большим
|
||||
|
||||
Reference in new issue
Block a user