Repository navigation
chore: regenerate cutover rehearsal gate after #1607 - #1762
Merged
Merged
Conversation
The cutover rehearsal fixture retried a drain promote only on the old 500 "failed to promote events" answer, after reading an "already in progress" row from the sidecar error log. Since #1684 the route answers lock contention with 503 and PROMOTE_EVENTS_BUSY_BODY, and writes no error_log row, so F5, F5-delivery, F6b and F6b-delivery threw on the first busy answer and the full rehearsal failed. RehearsalCase.promote now retries exactly once when the client error carries statusCode 503 and the exact PROMOTE_EVENTS_BUSY_BODY.error text. Any other failure stays fatal. The obsolete error_log branch and the unused lastPromoteRefusal helper are removed; the recorded step label retried-once-after-lock-contention is unchanged. Test-only; no changeset or codecov fragment. A filtered rehearsal of the four rows passed, each with one immediate retry, so no pause is added. Refs #1761, #1726 Signed-off-by: Bernardo Donadio <bcdonadio@bcdonadio.com>
The checked-in gate named tested commit 41e046b and a scenarios.json manifest hash that no longer matches main, so it could not certify the current tree. This regenerates it from a fresh full-profile rehearsal at tested commit b756ae4: harness run 4cb02700, 41 rows, exit 0 in 1146 s, verdict pass-with-documented-limits, cleanup clean. The JSON is the assembler output with the host-specific prefix of the 43 rehearsal.homeRoots entries replaced by <run-tmp>/ after absence was verified on the real paths. The Markdown report is regenerated from that JSON and records the SHA-256 of the original paths. Only the two gate files change. Refs #1726 Signed-off-by: Bernardo Donadio <bcdonadio@bcdonadio.com>
bcdonadio
enabled auto-merge
October 25, 2026 09:43
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. |
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.
Why
docs/migration-rehearsal-gate.json/.mdstill recorded the cutover rehearsal for commit 41e046b and the hash of an olderscenarios.json. After #1607 and #1707 moved single-generation and set rows to the two-role order, that pass was stale release evidence (#1726).Regenerating it exposed #1761. Since #1744 (#1684),
POST /promote-eventsanswers lock contention with a 503 busy body, but the rehearsal's promote step still only retried the old 500 response. Rows F5, F5-delivery, F6b and F6b-delivery therefore failed.How
Two commits:
RehearsalCase.promoteretries exactly once when the client error hasstatusCode503 and the route'sPROMOTE_EVENTS_BUSY_BODY.errormessage, which is imported from the route rather than copied. Every other failure, and a second busy answer, stays fatal. The dead 500/error_logbranch is removed, and the recorded step labels are unchanged.docs/migration-rehearsal-gate.json; the run-temp home roots are redacted to<run-tmp>/after their absence was verified on the real paths, and the original path-list digest is recorded.docs/migration-rehearsal-gate.mdis regenerated from that JSON.Testing
rehearsal.manifestSha256matchessha256sum test/postgresql/cutover-rehearsal/scenarios.jsonat the tested commit.check-evidence.tsvalidates the committed JSON at#/$defs/gate.Reviewer guide
promotemethod intest/postgresql/cutover-rehearsal/fixture.ts.docs/migration-rehearsal-gate.md(tested inputs, rows, limits, cleanup receipt). The JSON is generated.Closes #1726
Closes #1761