Repository navigation
PROD-2782: republish a page's other locale when a save in one locale puts it in staging - #237
Merged
5PK merged 1 commit intoOct 14, 2026
Conversation
…puts it in staging A page's zones are shared by all of its locales. When a save in one locale adds, removes or reorders components, the server cuts a new page version and gives every other language a staging row on it (ClearPageContent / ReorderPageContent), so the page drops to Staging in its other locales. --autoPublish only republished pages the run saved in that locale, so the other locale stayed in Staging, and the PROD-2628 refresh then recorded its new version as in sync, so later runs skipped it as up to date. refreshOtherLocaleVersions already re-reads the page in each other locale of the run after a save. It now records the page for republishing in that locale when it was Published on the target when pulled, is Staging now, and is Published on the source (a page left in staging on the source stays in staging). executeAutoPublish adds those pages to that locale's publish list (pages/both), de-duplicated, and updates their mappings as usual. A page whose own save in that locale fails is never republished, whichever order the saves ran in. Without auto-publish of pages, the run lists them as non-blocking "staging" warnings in the console and --jsonSummary. Locales not in the run are not checked: there is no pulled state for them. Co-Authored-By: Claude Opus 5.5 <[email protected]>
5PK
force-pushed
the
feature/PROD-2782-republish-other-locale
branch
from
October 14, 2026 18:15
be281de to
9ed4f4c
Compare
5PK
marked this pull request as ready for review
October 14, 2026 18:25
DerekAgility
approved these changes
Oct 14, 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.
Problem
A page's zones are shared by all of its locales. When the CLI saves a page in one locale and the save adds, removes or reorders components, the server puts the page in Staging in its other locales:
ClearPageContentandReorderPageContentcut a new page version.ContentItemsrow in state 1.A field-only save (
UpdatePageItem) carries the other languages' rows over unchanged, so it doesn't do this.--autoPublishonly republished pages the run saved in that locale, so the other locale stayed in Staging. The PROD-2628 refresh then recorded its new version as in sync, so later runs skipped it as up to date and never fixed it. The live site is unaffected, but the target no longer matches the source: the page is Published there and Staging here, and that locale's live page doesn't pick up the new structure.This mostly shows up when the target's structure changes without a matching source change in the other locale:
Change
refreshOtherLocaleVersionsalready re-reads the page in every other locale of the run after a save. It now records the page for republishing in that locale when all of these hold:executeAutoPublish(pages/both) adds those pages to that locale's publish list. Duplicates are removed by the existing per-locale de-duplication, and the existingupdateMappingsAfterPublishmoves their mapping versions forward.process-sitemapblocks it for the rest of the run. This applies whether the failure comes before or after the save that queued it.contentor off), the run lists these pages under "Pages Left in Staging by Another Locale's Save". They also go into--jsonSummary→autoPublish.warnings, typestaging. They don't block the run.state.tsfollows the failed-content and held-back-template registries, and is cleared at the start of each push.Out of scope: locales that aren't in the run. The CLI has no pulled state for them, so it can't tell whether the page was Published before the save.
agility verify(#235) reports the publish-state difference.Testing
refresh-other-locale-versions.test.ts: records the page for each condition above, and doesn't for:process-sitemap.test.ts: a failed save drops the queued page and stops a later save from queuing it again. An up-to-date skip keeps it.push-auto-publish.test.ts(new):executeAutoPublishpublishes the page in the locale it went to staging in, and updates that locale's mappingcontentmode doesn't publish itpush.test.ts/json-summary.test.ts: the merge and warning helpers, andstagingbeing non-blocking and counted as a warning.npx jest(stacked on PROD-2773: warn when content references a CDN container owned by neither the source nor the target #236): 132 suites / 2,534 tests pass.tsc --noEmitis clean. eslint has 0 errors.Jira: PROD-2782. Relates to PROD-2776 and PROD-2628.
🤖 Generated with Claude Code