docs: clean-install-only, versions.env и очистка предыдущего поколения
Новый docs/14-legacy-cleanup.md: как выглядит отказ установщика, полный список маркеров чужой установки, что сохранить перед очисткой, работа purge-v0.sh, ручная процедура и отдельно - случай незавершённой установки текущего поколения, где нужен repair, а не очистка. Обновлено под фактическое поведение: - README и package/docs: установка описана как две фазы, PHASE 0 ничего не меняет; добавлен troubleshooting по отказу clean-host; версии toolchain больше не передаются через окружение; - 02-build-layer: раздел про versions.env (что в нём есть и чего нет и почему), verify_versions_contract, проверка происхождения артефакта по upstream hashes.txt; - 08-orchestrator-spec: двухфазный контракт, read-only guard, идентификация поколения в install-state, ownership-aware rollback, расширенная семантическая проверка конфига, структурная редакция; - 04-admin-panel: таблица удалённых маршрутов и почему они удалены, а не оставлены заглушками; сужена формулировка гарантии санитайза; - 11-testing: новые unit-наборы, полный список инвариантов конфига, раздел про одну реализацию URI вместо двух, сценарий проверки границы установки на живом сервере; - 12-operations и 13-runbook: диагностика отказов по поколению, поведение diagnostics-бандла; - tools/build/README: контракт версий, обе суммы Bun, hashes.txt. CHANGELOG: раздел Unreleased с разбором каждого исправленного дефекта.
This commit is contained in:
@@ -104,6 +104,58 @@ curl -sS \
|
||||
|
||||
## Типовые проблемы
|
||||
|
||||
### Установка отказывается: обнаружена предыдущая установка
|
||||
|
||||
Отказ происходит в **PHASE 0**, до любой мутации. Сервер остался в том
|
||||
состоянии, в котором был: ни `/usr/local/lib/hy2xs`, ни
|
||||
`/var/lib/hy2xs/install-state.json`, ни работающие службы не тронуты.
|
||||
|
||||
В тексте отказа перечислены конкретные найденные маркеры. Порядок действий —
|
||||
[14-legacy-cleanup.md](14-legacy-cleanup.md): сохранить данные, посмотреть план
|
||||
`tools/legacy/purge-v0.sh`, выполнить очистку, установить заново.
|
||||
|
||||
Проверить хост, ничего не устанавливая:
|
||||
|
||||
```bash
|
||||
./orchestrator/hy2xs-orchestrator preflight-install --package-dir "$(pwd)"
|
||||
```
|
||||
|
||||
### `reconfigure`/`repair` отказываются: маркер чужого поколения
|
||||
|
||||
```text
|
||||
Маркер установки /var/lib/hy2xs/install-state.json не относится к текущему
|
||||
поколению HY2XS.
|
||||
```
|
||||
|
||||
`installed: true` сам по себе ничего не доказывает: такой же маркер мог
|
||||
остаться от `0.x`. Обе команды проверяют `product`, `release_line` и
|
||||
`config_schema_version`.
|
||||
|
||||
Посмотреть, что видит оркестратор:
|
||||
|
||||
```bash
|
||||
hy2xs-orchestrator status --package-dir /usr/local/lib/hy2xs/package \
|
||||
| grep -o '"install_state_generation":"[^"]*"'
|
||||
```
|
||||
|
||||
`"current"` — маркер текущего поколения; `"foreign"` — требуется чистая
|
||||
переустановка; `"absent"` — установки нет.
|
||||
|
||||
### Незавершённая установка текущего поколения
|
||||
|
||||
Если установка упала **после** начала применения изменений, полная очистка не
|
||||
нужна:
|
||||
|
||||
```bash
|
||||
hy2xs-orchestrator repair \
|
||||
--package-dir /usr/local/lib/hy2xs/package \
|
||||
--config /etc/hy2xs/hy2xs.env \
|
||||
--allow-partial-state
|
||||
```
|
||||
|
||||
Флаг обязателен и осознан: без него `repair` работает только поверх полностью
|
||||
успешной установки.
|
||||
|
||||
### Сервер установился, но UI не работает
|
||||
Проверить:
|
||||
- разложился ли bundled UI
|
||||
|
||||
Reference in New Issue
Block a user