Repository navigation
fix: Normalize generated container names in warm recovery - #981
Conversation
Co-Authored-By: Codex <noreply@openai.com>
|
@codex review Please review the complete three-file change at head |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
AI assistance
OpenAI Codex (GPT-6 family) applied and verified the previously reviewed patch. The exact model variant is not exposed in this session. A separate native read-only agent reviewed the identical patch in the preceding job and reported zero material findings; that local review does not constitute a GitHub review of this PR head. An exact-head Codex review is requested separately.
What changed
Allow the warm recovery operator to compare a single unnamed template container with a revision that adds only a nonempty generated container name. Apply this comparison to the verified warm baseline and replacement readbacks. Explicit container names, multiple-container mismatches, and all other fields remain strict. Frozen revision fingerprints still include the full spec and generated name, so subsequent name drift fails verification.
Update the rollout contract and add synthetic regression coverage for warm-only and replacement-only generated names, unrelated configuration drift, explicit names, multiple containers, input preservation, and post-freeze drift with the existing compensation bound.
How verified
external).git diff --check, the offline environment-workflow contract, andpython scripts/check_style.pypassed. The documentation check reports one existing nonblocking README outline advisory.9a06115fb3ac890773295eaa61db8f7c44591f16728c9c205f4955633ccb5fe9, identical to the independently reviewed local patch. Base:826c9fbf49f86da4cce8ae424c68b95bdd7fbac8.~/codex-jobs/ibkr-s3-norm-publish-r1/out/{verification.json,recovery.log,related.log,ruff-changed.log,ruff-repository.log,diff-check.log,environment-workflow-contract.log,documentation.log,normalization.patch,prior-independent-review.json}. Original review:~/codex-jobs/ibkr-s3-recover-warm-r2/out/independent-review.json.Why
Cloud Run may generate a revision-side name for an unnamed container. Strict template-versus-revision equality therefore rejects an API representation difference before warm recovery can proceed. This warm-only normalization preserves the approved template and frozen snapshots and does not broaden the accepted configuration. See the Cloud Run container name reference.
Risk
High: this changes operator verification in
scripts/cloud_run_warm_recovery.py. The change is limited to three files and preserves source/digest/UID/generation/traffic checks, frozen fingerprints, execution controls, and the existing one-compensation limit. No workflow or production configuration is changed.This PR is an engineering-only Draft under owner instruction
t1275u; prior normalization authority:t1271s7339,t1271s7341,t1273s7362. Deployment and recovery remain separate owner steps after code integration and exact operator binding. No recovery workflow was dispatched, private card created, cloud/Secret/IAM/Scheduler/peer/switch modified, or deletion performed. Publication does not establish runtime recovery or production acceptance. Do not mark ready, add owner approval, merge, or deploy as part of this job.