Skip to content

Re-run the Client release rollback drill when rollback code changed - #4689

Merged
2 commits merged into
mainfrom
work/lp-4688-redrill
Oct 24, 2026
Merged

2 commits merged into
mainfrom
work/lp-4688-redrill

Conversation

@shiny-code-app

Copy link
Copy Markdown
Contributor

Director decision Q749 (cbusillo/direction#3) asks for the CM website rollback to be retested on current code today. Launchplane ran each product's Client-release rollback drill once, ever, so CM's October 8 drill kept counting even though about 30 commits have since changed release and rollback code.

A passed drill now counts only when its acceptance was recorded at or after ROLLBACK_DRILL_CODE_CHANGED_AT in control_plane/client_release.py. A change to the rollback or promotion path moves the marker forward in the same PR, so each product's next accepted release drills again on the new code. An acceptance time that cannot be parsed does not count, so the product drills rather than the review failing. docs/release-review.md describes the rule. Every caller (release review page, invitation, acceptance, standing acceptance) already goes through release_start_for_acceptance, so they stay in agreement. Decisions already recorded keep the release sequence stamped when they were accepted.

Closes #4688. Parent: #2882.

Verification

  • Failing first: the drill test failed with no marker (AttributeError), and the unparseable-time case failed with ValueError: ... decided_at requires a timezone before the fix.
  • uv run --extra dev python -m unittest tests.test_client_release tests.test_generic_web_client_release tests.test_client_release_redeploy tests.test_generic_web_promotion_recovery: 142 tests OK on the first commit; the two release modules (98 tests) OK after the fix.
  • ruff check, ruff format --check and mypy on the changed Python files pass.
  • scripts/validate_role_words.py was not run locally: its frontend helper needs the typescript package, which is not installed in this fresh worktree. CI runs it.
  • JetBrains inspection: UNKNOWN. This task's brief forbids launching any JetBrains app.

Review

OpenAI (Codex, via review_with_model.py; the run did not report the model), first commit. One P2: a stored drill decision with a timezone-less decided_at would raise and block review and acceptance for that product. Reproduced with a test, fixed in the second commit by treating it as not counting.

A passed drill now counts only when its acceptance was recorded at or after
ROLLBACK_DRILL_CODE_CHANGED_AT. Q749 asks for the CM website rollback to be
retested on current code; about 30 release and rollback commits landed since
its October 8 drill.

Refs #4688
@shiny-code-app

Copy link
Copy Markdown
Contributor Author

Review result: weighed
Head: b51e7a6

Review of record, weighed.

  • First review: OpenAI via review_with_model.py, on 8295f5ad; the CLI did not report the model. One P2: a stored drill decision with a timezone-less decided_at raised ValueError in the new check and would block release review, acceptance, invitations and standing acceptance for that product. Reproduced: the test raised ValueError: Mutation reservation decided_at requires a timezone without the fix. Fixed in b51e7a69 by treating an unparseable time as not counting, so the product drills.
  • Rereview: OpenAI, on b51e7a69, covering the fix and what it touches: none.

Nothing declined.

@shiny-code-app

Copy link
Copy Markdown
Contributor Author

Ready for the merge train

Head: b51e7a6

@shiny-code-app

shiny-code-app Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor Author

Launchplane completed the merge-train step for this pull request.

Launchplane landed this pull request through protected batch PR #4696.

Launchplane manages this comment and will update it as the train moves.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Re-run the Client release rollback drill when rollback code changed

0 participants