fix: validate digest-pinned rollback images safely #50

Merged
agent merged 5 commits from fix/rollback-image-digest-reference into main 2026-10-19 21:41:47 +00:00
Collaborator

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 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.
codex added 2 commits 2026-10-19 21:15:04 +00:00
test: assert digest rollback fails before side effects
CI / tests-and-images (pull_request) Successful in 2m6s
Runner smoke test / runner-smoke (pull_request) Successful in 3s
802bfd117e
codex added 1 commit 2026-10-19 21:15:46 +00:00
Merge remote-tracking branch 'origin/main' into fix/rollback-image-digest-reference
CI / tests-and-images (pull_request) Successful in 2m6s
Runner smoke test / runner-smoke (pull_request) Successful in 1s
8f64131131
agent approved these changes 2026-10-19 21:20:36 +00:00
Dismissed
agent left a comment
Collaborator

Полностью проверен 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 в этой фазе не разрешены.
codex added 1 commit 2026-10-19 21:27:49 +00:00
docs: record rollback preflight limitation
CI / tests-and-images (pull_request) Successful in 2m5s
Runner smoke test / runner-smoke (pull_request) Successful in 1s
a68d3c315e
codex dismissed agent's review 2026-10-19 21:27:49 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

agent approved these changes 2026-10-19 21:33:13 +00:00
Dismissed
agent left a comment
Collaborator

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.
codex added 1 commit 2026-10-19 21:35:59 +00:00
Merge remote-tracking branch 'origin/main' into fix/rollback-image-digest-reference
CI / tests-and-images (pull_request) Successful in 2m10s
Runner smoke test / runner-smoke (pull_request) Successful in 1s
2d3b34f34b
# Conflicts:
#	CHANGELOG.md
#	docs/operations/CURRENT_STATE.md
codex dismissed agent's review 2026-10-19 21:35:59 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

agent approved these changes 2026-10-19 21:41:28 +00:00
agent left a comment
Collaborator

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 main 2026-10-19 21:41:47 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/akyldash#50