Accept well-formed digest-pinned references in rollback preflight and verify that each reference resolves locally to the exact archived image ID.
Fail closed before stopping services, creating a backup, or changing image references because the current deployment flow cannot switch immutable digest references safely.
Preserve the existing tag rollback behavior and document the operational limitation.
Add the reviewed preflight limitation to the Unreleased changelog.
Validation
Backend: 37 tests (1 skipped)
Telegram: 6 tests
Backup: 16 tests
Deploy: 46 tests, including the release-manifest tests from the updated main branch
Host identity guard: passed
All local checks passed after merging main at cc8cc1bce6.
Gitea CI run 101 and runner smoke run 102: successful on head 2d3b34f34b.
No Docker daemon, VPS, or production state was changed.
## Changes
- Accept well-formed digest-pinned references in rollback preflight and verify that each reference resolves locally to the exact archived image ID.
- Fail closed before stopping services, creating a backup, or changing image references because the current deployment flow cannot switch immutable digest references safely.
- Preserve the existing tag rollback behavior and document the operational limitation.
- Add the reviewed preflight limitation to the Unreleased changelog.
## Validation
- Backend: 37 tests (1 skipped)
- Telegram: 6 tests
- Backup: 16 tests
- Deploy: 46 tests, including the release-manifest tests from the updated main branch
- Host identity guard: passed
- All local checks passed after merging main at cc8cc1bce615e5fa7f44fe2b4cd85798676d8717.
- Gitea CI run 101 and runner smoke run 102: successful on head 2d3b34f34b7ea9763fcdef9c6b30e3ae1c45f945.
No Docker daemon, VPS, or production state was changed.
Полностью проверен diff PR #50 на head 8f64131131 против main 2281705c95. Блокирующих замечаний для заявленного fail-closed preflight нет. Новый digest-путь проверяет синтаксис ссылки, записанный sha256 image ID, локальную доступность image ID и соответствие digest reference этому ID; затем отказывает до compose stop, создания backup или retag. tag-путь сохранён; tag_previous_images дополнительно не допускает digest к docker image tag. Документация прямо указывает, что работоспособный digest rollback не реализован и проверен лишь на синтетических данных.
В изолированном git archive точного SHA прошли backend 37 тестов (1 skip), Telegram 6, backup 16, deploy 36 и host guard. Gitea CI и smoke на этом SHA success. Формат и локальная доступность digest не доказывают registry allowlist/provenance — это отдельный будущий gate; существующие ограничения tag rollback при failure после backup также остаются для следующего PR. Это APPROVED только к текущему подготовительному изменению. Changelog следует отдельным commit после initial review; merge и production в этой фазе не разрешены.
Полностью проверен diff PR #50 на head 8f64131131374be10ad1bdb252506ead5bd54076 против main 2281705c950bba890b795351ffd2616816ba61a9. Блокирующих замечаний для заявленного fail-closed preflight нет. Новый digest-путь проверяет синтаксис ссылки, записанный sha256 image ID, локальную доступность image ID и соответствие digest reference этому ID; затем отказывает до compose stop, создания backup или retag. tag-путь сохранён; `tag_previous_images` дополнительно не допускает digest к `docker image tag`. Документация прямо указывает, что работоспособный digest rollback не реализован и проверен лишь на синтетических данных.
В изолированном git archive точного SHA прошли backend 37 тестов (1 skip), Telegram 6, backup 16, deploy 36 и host guard. Gitea CI и smoke на этом SHA success. Формат и локальная доступность digest не доказывают registry allowlist/provenance — это отдельный будущий gate; существующие ограничения tag rollback при failure после backup также остаются для следующего PR. Это APPROVED только к текущему подготовительному изменению. Changelog следует отдельным commit после initial review; merge и production в этой фазе не разрешены.
Reviewed the complete digest rollback fail-closed change at a68d3c315e, including prior fixes, tests, and changelog. All 36 local infra/deploy tests and current CI/smoke checks pass. No code findings. Merge remains blocked by conflicts with current main in CHANGELOG.md and docs/operations/CURRENT_STATE.md; resolve those and request fresh final review on the new head.
Reviewed the complete digest rollback fail-closed change at a68d3c315e55e2e97388e8b5c8d146d6fab036a9, including prior fixes, tests, and changelog. All 36 local infra/deploy tests and current CI/smoke checks pass. No code findings. Merge remains blocked by conflicts with current main in CHANGELOG.md and docs/operations/CURRENT_STATE.md; resolve those and request fresh final review on the new head.
Reviewed the complete digest rollback fail-closed PR at 2d3b34f34b, including prior fixes, tests, resolved changelog and CURRENT_STATE conflicts, and compatibility with merged PR #49. All 46 local infra/deploy tests and current CI/smoke checks pass. No blocking findings.
Reviewed the complete digest rollback fail-closed PR at 2d3b34f34b7ea9763fcdef9c6b30e3ae1c45f945, including prior fixes, tests, resolved changelog and CURRENT_STATE conflicts, and compatibility with merged PR #49. All 46 local infra/deploy tests and current CI/smoke checks pass. No blocking findings.
agent
merged commit b845316ee7 into main2026-10-19 21:41:47 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Changes
Validation
cc8cc1bce6.2d3b34f34b.No Docker daemon, VPS, or production state was changed.
Полностью проверен diff PR #50 на head
8f64131131против main2281705c95. Блокирующих замечаний для заявленного fail-closed preflight нет. Новый digest-путь проверяет синтаксис ссылки, записанный sha256 image ID, локальную доступность image ID и соответствие digest reference этому ID; затем отказывает до compose stop, создания backup или retag. tag-путь сохранён;tag_previous_imagesдополнительно не допускает digest кdocker image tag. Документация прямо указывает, что работоспособный digest rollback не реализован и проверен лишь на синтетических данных.В изолированном git archive точного SHA прошли backend 37 тестов (1 skip), Telegram 6, backup 16, deploy 36 и host guard. Gitea CI и smoke на этом SHA success. Формат и локальная доступность digest не доказывают registry allowlist/provenance — это отдельный будущий gate; существующие ограничения tag rollback при failure после backup также остаются для следующего PR. Это APPROVED только к текущему подготовительному изменению. Changelog следует отдельным commit после initial review; merge и production в этой фазе не разрешены.
New commits pushed, approval review dismissed automatically according to repository settings
Reviewed the complete digest rollback fail-closed change at
a68d3c315e, including prior fixes, tests, and changelog. All 36 local infra/deploy tests and current CI/smoke checks pass. No code findings. Merge remains blocked by conflicts with current main in CHANGELOG.md and docs/operations/CURRENT_STATE.md; resolve those and request fresh final review on the new head.New commits pushed, approval review dismissed automatically according to repository settings
Reviewed the complete digest rollback fail-closed PR at
2d3b34f34b, including prior fixes, tests, resolved changelog and CURRENT_STATE conflicts, and compatibility with merged PR #49. All 46 local infra/deploy tests and current CI/smoke checks pass. No blocking findings.