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:
2026-08-27 12:16:38 +05:00
parent 42db78c6a0
commit 3a4ce9c751
12 changed files with 1117 additions and 99 deletions
+26
View File
@@ -23,3 +23,29 @@
```
В baseline нет target-side JavaScript, TypeScript, frontend или Go build step.
## Установка выполняется в две фазы
```text
PHASE 0 — READ ONLY
проверка прав и checksums пакета
clean-host preflight из распакованного архива
↓ ноль изменений на сервере
PHASE 1 — MUTATION
установка orchestrator, раскладка runtime-пакета
install
```
HY2XS v1 **не устанавливается поверх** предыдущей установки и не мигрирует её
состояние. Если PHASE 0 обнаружит старую установку, установщик завершится с
ошибкой и **не изменит на сервере ничего**.
Проверить хост, ничего не устанавливая:
```sh
./orchestrator/hy2xs-orchestrator preflight-install --package-dir "$(pwd)"
```
Очистка предыдущей установки — отдельная явная операция оператора, она описана
в `docs/14-legacy-cleanup.md` репозитория проекта и выполняется скриптом
`tools/legacy/purge-v0.sh`. Установщик её никогда не запускает сам.