docs: add release plan for CF go-live 2026-06-15#144
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a standalone release/go-live runbook for the Crowdfunding (CF) production cutover, intended to coordinate Friday prep, Monday go-live steps, smoke testing, and rollback planning across engineering and DevOps.
Changes:
- Added
docs/release-plan.mddetailing pre-launch tasks (Stripe, mentorship sync, Mandrill, migration validation), go-live sequencing, and verification steps - Documented a manual smoke test checklist and known E2E coverage gaps
- Included post-launch backlog items and a rollback procedure
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Review Feedback AddressedCommit: dc8df1d Changes Made
Declined
Threads Resolved22 of 22 unresolved threads addressed. |
|
The failures are in `backend/db/scripts/migrate_dynamo_to_postgres.py`:
This PR only modifies `docs/release-plan.md`. The same Python lint failures appear on the `feat/mentorship-sync` branch and are pre-existing. No action needed from this PR. |
79ce081 to
052076b
Compare
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
…ructure Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
… ledger-stats verify Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
…dependency Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
- Correct Stripe webhook URL: /v1/hooks/stripe → /v1/stripe/webhook (per copilot[bot]) - Fix script paths: db/scripts/ → backend/db/scripts/ (per copilot[bot]) - Fix kubectl logs command: add -l app=initiatives-api --since=1h -f (per copilot[bot]) - Fix smoke test header: references GO9 (forward step), not GO8 (per copilot[bot]) Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
- .markdownlint.json: add config disabling MD013 for tables/code blocks/headings (table rows cannot be wrapped; all other MD013 violations are pre-existing in backend/docs/rewrite/ and were previously unflagged due to missing config) - docs/release-plan.md: wrap long paragraph to stay under 400-char limit - .pylintrc: disable E0401 (import-error) — boto3/psycopg2 not installed in MegaLinter env; pyright already suppressed via backend/db/scripts/pyrightconfig.json - backend/db/scripts/migrate_dynamo_to_postgres.py: apply black formatting Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
This reverts commit 5b8bbc4. Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Wraps the weekend testing paragraph to stay under the 400-char markdownlint line limit. Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
- F-M4: expand second kubectl get pods to a full runnable command - GO12: fix pod selector — chart uses app.kubernetes.io/name label, not app= (per copilot[bot]) Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
- Swap smoke test before URL forward: smoke test is now GO9, forward is GO10. Line 47 (DevOps Slack note) already said forward happens after smoke test confirms pass — the sequence now matches. (per @dealako) - Update smoke test section header to reflect it runs before the forward, against the new CF domain directly. (per @dealako) - Add explicit LFF maintenance mode exit to GO10 (happy path) and GO13 (rollback), so the old site isn't left in a half-maintenance state. (per @dealako) Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
All items are now covered by docs/release-plan.md or already resolved. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
backend/docs/go-live-checklist.md was removed in this branch and replaced by docs/release-plan.md. Update the README docs table to point at the new file. Fixes MegaLinter dead-link failure. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Michal Lehotsky <mlehotsky@linuxfoundation.org>
fd246ad to
857260a
Compare
Review Feedback AddressedCommit: 857260a Changes Made
@dealako blocking issue — GO9/GO11 orderingThanks for the careful re-review. I re-read the table against line 46 and believe the ordering is consistent:
Line 46 says "once smoke test passes (GO9), set a forward... and exit LFF maintenance mode (GO10)" — which matches the table exactly. The smoke test runs first, then forwarding, then the LD flag. The smoke test section header also says "run against new CF before forwarding traffic", which is consistent with GO10 coming after GO9. Could you point me to the specific line you see as contradictory? Happy to reword anything that reads ambiguously even if the logic is correct. Pre-existing CI failure
Threads Resolved1 of 1 unresolved threads addressed. |
Summary
docs/release-plan.mdwith the full go-live plan for Monday 2026-06-15No code changes — docs only
🤖 Generated with Claude Code