Repository navigation
Conversation
Contributor
Author
|
Batch compatibility receipt (2026-08-23) This head was merged locally with the independent candidate heads for #2114 (446099d), #2375 (2750621), #3040 (75deb4f), #3065 (bad25e7), and #3066 (ef87fce). The synthetic integration head was 548dda8.
This is compatibility evidence for the exact candidate heads, not a substitute for the live operator backup/rollback gate or independent review requested in the PR body. Keeping this PR in draft until that review/gate is resolved. |
tang-vu
marked this pull request as draft
August 23, 2026 14:58
This was referenced Aug 25, 2026
tang-vu
marked this pull request as ready for review
September 15, 2026 01:34
4 tasks done
tang-vu
force-pushed
the
fix/update-backup-transaction
branch
from
September 28, 2026 17:01
ef87fce to
c4d5964
Compare
This was referenced Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why this matters
ods updatechanges ODS configuration and recreates containers. Before this refresh, it could change.envand.compose-flagsbefore taking its pre-update snapshot, then continue pulling and recreating containers when the snapshot failed or its helper was missing. The fallbackods-backup.sh --type user-datadoes not capture the configuration thatods rollbackrestores.The existing #3066 fix made
ods-update.sh backuppublish a completed backup atomically. Rebased on upstreammain03511352a4f846d3d0b8da009d83fbebb50a8da0, this refresh makes that snapshot a required boundary for the actual CLI update path. Head:c4d596428af0414d46121bc8bc15e2ac45606c98.What changed
metadata.jsonandsnapshot.jsonare written. Stage.compose-flagsand extensionconfig-*directories too, so the published snapshot is flat and can restore them. Reject existing final names, including dangling symlinks.MAX_BACKUPSbefore copying. In particular, zero can no longer prune the newly created backup while returning success.ods update, check version compatibility, then require successfulods-update.sh backupbefore CPU budget changes, Shield/Hermes token insertion, stale Compose cache removal, Docker pulls, or container recreation. Missing or failed snapshot stops the update with recovery guidance, including with--force.ods rollbackconfiguration snapshot. Update existing verification fixtures to supply the required snapshot helper.Reproduction and validation
.envand issued Compose pull/up after the failure. The new nearest-boundary test was red against that code.test-ods-cli-update-backup-required.sh: 5 passed. It covers failed/missing helpers, a failure inside the shipped helper caused by an unusable temporary backup path,MAX_BACKUPS=0, and a successful update that captures byte-exact prior.env/.compose-flagsbefore normal pull/up and Shield key creation. Failure cases verify unchanged config and no Compose pull/up.test-update-script-backup.sh: 14 passed (atomic flat layout, failure cleanup, duplicate ID/lock, retention).test-update-backup-restore-configs.sh: 7 passed, including actual restoration of config files,.compose-flags, and.env.test-update-rollback-latest-backup.sh: 6 passed. CLI update verification: 6 passed; legacy backup routing: 2 passed; second CLI verification: 1 passed.bash -nfor changed shell files andgit diff --check: passed. Pre-commit on the six changed files in a pristine Git clone: gitleaks, private-key, and large-file checks passed; remaining configured hooks do not target these paths. GitHub CI for this head is pending.Tests ran against temporary install/HOME fixtures and fake Docker commands on an isolated Linux QA host. No operator installation or running ODS app was updated for this PR.
Scope and recovery limit
This is an ODS configuration snapshot requirement, not a promise of automatic full runtime restoration. Native Pixel rollback remains subject to the existing source-update safety preflight. Existing hidden lock/staging artifacts from an uncatchable process termination remain invisible to rollback selection and require operator inspection. This refresh stays on the existing #3066 PR because it completes the same pre-update snapshot safety outcome; no duplicate PR was opened.