CedarCopilot wants to merge 0 commits into staging from fix/staging-deploy-stack-collision
Live on prod, no production signal yet
Verification reached its budget before a verdict.
Unable to complete the production verification from the available telemetry: the expected retry log was absent, and the stack-name search matched unrelated container-performance telemetry rather than tied deploy executions. No positive success signal or tied failure evidence.
Unable to verify the intended behavior: no matching production CloudWatch log entries were found after the deployment for stack stabilization waits, cdk deploy execution, or UPDATE_IN_PROGRESS collision errors. Positive runtime evidence is absent, so the result is inconclusive.
Inconclusive: after the 2026-09-08T21:32:05Z deploy, exact production CloudWatch searches returned 0 tied cedar_wait_for_stack_stable timeout/read-retry/in-progress messages, while OTEL returned 0 deploy/CloudFormation/CDK-specific spans. The available repository-wide OTEL.
Libra has verdicts on 0 of 4 tracked behaviors on prod; 4 are still being checked. Libra checks hourly for 3 days after each deploy.
cancel-in-progress: true concurrency group kills the GitHub Actions job on a new push, but does not cancel the cdk deploy CloudFormation update already underway , CFN keeps applying it until it reaches a terminal state on its own.cdk deploy collides with the still-running update: ValidationError: Stack:...CedarAwsStagingEnvironmentStack... is in UPDATE_IN_PROGRESS state and can not be updated.Deploy AWS Staging run (started ~18:43) failed on the collision. The stack itself reached UPDATE_COMPLETE fine , only the next workflow run failed.cedar_wait_for_stack_stable to aws/scripts/deploy-utils.sh, which polls the stack status and waits for any *_IN_PROGRESS state to clear (up to 15 min) before proceeding. Wired into deploy_stack() in aws/scripts/deploy-surface.sh, which is the single call site used by both the bootstrap and main deploy paths.bash -n syntax check on both edited scriptsCedarAwsStagingEnvironmentStack is currently UPDATE_COMPLETE (no residual stuck state)🤖 Generated with Claude Code
https://claude.ai/code/session_01BWvDYfrsL4PAK3iqd3AzQU
The PR adds a CloudFormation stabilization gate before both bootstrap and normal CDK deployments.
_IN_PROGRESS.deploy_stack call paths through the shared helper.The PR should not merge until the stability check distinguishes a genuinely absent stack from AWS API failures that leave stability unconfirmed.
A failed status query currently returns success, allowing CDK deployment to begin while the target stack may still be updating and thereby preserving the collision path this change is intended to prevent.
Files Needing Attention: aws/scripts/deploy-utils.sh
| Filename | Overview |
|---|---|
| aws/scripts/deploy-surface.sh | Adds the stabilization gate to the shared function used by both bootstrap and normal CDK deployment paths. |
| aws/scripts/deploy-utils.sh | Implements bounded CloudFormation polling, but suppresses and accepts operational describe-stacks failures. |
### Issue 1
aws/scripts/deploy-utils.sh:67-70
**AWS Errors Bypass Waiting**
If `describe-stacks` fails because of a transient AWS API or network error while the stack is still updating, `|| true` turns the failure into an empty status and the next condition treats it as stable. The deployment then starts without confirming stability and can hit the same CloudFormation update collision this guard is intended to prevent. Distinguish an expected stack-not-found response from operational failures, and fail or retry the latter.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
Reviews (1): Last reviewed commit: ["fix(deploy): wait for CloudFor
Libra has not measured any production surfaces for this change yet.