feat: harden production readiness operations - #128
Merged
Conversation
abrichr
marked this pull request as ready for review
August 18, 2026 17:51
This was referenced Aug 18, 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.
What changed
mainand verify one exact custommaindeployment policy before they request AWS credentials.PutObject, a caller-supplied full-object SHA-256, and an enforced 5 GiB ceiling.ready: true.Why
Issue #126 shows that the daily backup can fail before database access because the protected environment has no settings. The previous health probe could also accept an incomplete response when its top-level boolean was true. GitHub failure email alone did not provide one durable operational signal.
The previous high-level S3 upload could switch to multipart above 8 MiB. A multipart SHA-256 is composite, but the workflow compared it with the full-file SHA-256. A realistic backup could therefore upload successfully and then fail its integrity check. The new launch contract uses one
PutObject, lets S3 validate the caller-supplied full-object checksum, verifies it again, and refuses an archive above the 5 GiB single-request limit before upload.The AWS OIDC roles trust GitHub environment subjects. The environments and repository branch gate must therefore exist before the stack creates those roles. The workflows now fail closed on an unprotected ref, a broad environment policy, a wildcard policy, or more than one policy.
The public deployment matrix and related pages also had a stale Flow 1.23.0 pin. The current
openadapt-cloudorigin/mainmanifest pins Flow 1.31.0 at release commit2d225dea9a0ad29ca84ce1b037cc0ac671367e28, with exact wheel and source archive hashes.Validation
python -m pytest -q tests— 184 passed on exact headefd17cc73148cbfeb55d9f896ba986a2e39fb11dpython scripts/check_published_version_claims.py --offline— passedpython scripts/validate_docs.py— passedmkdocs build --strict— passedactionlint .github/workflows/*.yml— passedpython -m compileall -q scripts tests— passedgit diff --check— passedefd17cc73148cbfeb55d9f896ba986a2e39fb11d— no concrete findings; 184 tests passed againhttps://app.openadapt.ai/api/health/ready— strict contract passed with 18 required components and 19 reported components992382684924aws cloudformation validate-template— passedThe AWS checks were read-only. The backup stack does not exist. No AWS resource, GitHub environment value, secret, repository rule, or paid service changed.
Founder steps before this is ready
mainwith pull requests and the applicable required status checks.production-backupandproduction-backup-monitor. Give each environment one exact custommaindeployment policy. Do not add a wildcard or tag policy. Do not require manual approval for these scheduled jobs.ops/backup/aws-backup-target.ymlin AWS account992382684924.AWS_BACKUP_ROLE_ARN,AWS_BACKUP_BUCKET,SUPABASE_DB_URL, andSUPABASE_PROJECT_REFinproduction-backup.AWS_BACKUP_MONITOR_ROLE_ARNandAWS_BACKUP_BUCKETinproduction-backup-monitor.agekey copy.main. Confirm that the encrypted archive is no more than 5 GiB and that S3 reports the exact full-object SHA-256.Relates to #126. Do not close #126 until the successful backup and remote-checksum exit condition passes.