Repository navigation
feat(deploy): release the Feed only when its inputs change; settle gate for container rollouts - #652
Merged
Merged
Conversation
- plan job: hash the Feed inputs and compare with the last successful cutover (feed/released); FEED_RELEASE_MODE=always forces a cutover. - site job (Feed unchanged): core migrations, Web build, deploy in the live gateway mode with re-verification, public smoke, rollback to the previous Web on failure. Never touches the runtime, containers or consumers. - deploy job (Feed changed): the existing cutover, with a 610 s rollout gate that waits for container placements to settle; records feed/released only after a successful smoke. - bot deploys after whichever path made its SCORE backend live. - production deploy/site and the apps release share production-d1-writers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AsperforMias
requested review from
KurosawaGeeker and
hikariming
as code owners
November 8, 2026 08:15
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
Production releases failed in 15 of 81 attempts between 2026-10-17 and 2026-11-07. Cloudflare data shows the main cause, 9 of 15:
completedat creation, but new placements keep starting the previous image for about 2–3 minutes. On 2026-11-07 the rollout completed at 09:04:26, the off restart at about 09:05 was rejected withcontainer_version_or_contract_mismatch, and the replacement placements only appeared at 09:06:25 and 09:07:18.What
feed-production-rollout.mjs): no lifecycle request is sent until 240 s after the rollout was created. Lifecycle requests are still never retried. The rollout step timeout goes from 310 s to 610 s.feed-release-plan.mjs) and compares them with the last successful cutover (feed/released).web-mode), re-verifies it, runs the smoke test, and rolls back on failure. It never touches the runtime.feed/releasedonly after a successful smoke.production-d1-writers, so core migrations are never applied concurrently.check-cf-release-workflowenforces all of the above, with new negative tests (17/17). The newfeed-release-plantests run in CI.Requires ghfind-server ≥ v1.0.2. The next composed release will run one Feed cutover (no successful cutover is recorded yet) to bring the paused Feed back.
🤖 Generated with Claude Code