Land tested merge-train batches through one protected PR - #2524
Conversation
|
Independent review by Anthropic
The low-severity permanently contradictory source-head case remains fail-closed and is documented: a confirmed batch merge is never discarded or called unused merely to release the train. An automatic override/disposition is outside the approved contract. Brief normal GitHub readback lag is handled with bounded read-only waits inside the landing pass; a test proves both entries complete in that pass after a delayed indirect-merge observation. Validation after the fixes: 152 combined adapter/admission/controller tests and 51 final focused tests pass, with Ruff, formatting, and mypy clean. A full local suite, fresh hosted CI, and a focused second Anthropic review are running. Final IDE inspection remains pending; the earlier RED triage is retained, not relabeled GREEN. No ready label has been added. |
|
Follow-up review by Anthropic
All 165 combined regression tests pass, including six real-store admission/policy tests, with Ruff, formatting, and mypy clean. Final full local tests, hosted CI, and post-test IDE inspection are pending. This PR remains unqueued. No source PR, protection rule, credential, grant, or real Owner decision changed. |
…312645c8dcc3205: merge PR #2524
|
Launchplane completed the merge-train step for this pull request.
Launchplane finished the merge-train step for this pull request. Launchplane manages this comment and will update it as the train moves. |
Strict up-to-date protection made the second source PR stale after the first source PR merged, despite a tested combined candidate. Multi-entry
mergebatches now create one PR for the exact candidate and land it once through the normal protected merge endpoint. Each source PR keeps a separate admission and outcome. Completion requires provider-confirmed indirect merging, exact source heads, Git ancestry, and the tested tree. This implements the owner-approved decision in #2518.The controller reconciles interrupted effects before dispatch, preflights all members before writing admissions, waits briefly for GitHub readback, and retires obsolete generated PRs without changing source PRs or branches. Edited generated PRs, failed checks, changed members, and policy changes can recover through normal replanning. Old records retain their hashes. Managed feedback links each constituent to the protected batch PR. A manual merge without a preceding admission remains an explicit reconciliation boundary; the generated PR states that it must be landed by the controller.
Validation at
87c9bde1:claude-opus-5-5reviews completed. Lifecycle findings were fixed and regression-tested; deliberate reconciliation boundaries and the rejected blanket GitHub BLOCKED precheck are explained in the review comments.Prerequisite #2519 is merged and deployed at
51701bac. After this implementation is landed and deployed, the genuine pair #2516/#2517 must still qualify #2494 through one controller landing pass, with persisted per-entry outcomes, managed feedback, and deployed-image verification. Merging this implementation alone does not close #2494.Refs #2494, #2518.
Delivery: merged at
0de8d835ab3e9bd9accc2839c61a75a5caec86f7; post-merge CI, Security, CodeQL, and Deploy Launchplane succeeded. Live runtime readback matches the built imagesha256:20cae5b52120d8f118094d319936c639d8741e59c208f68e62b69f813c788242. Landing tracelaunchplane_req_0bc91f88d97d44648da85ceeb359fad9, admissionmerge-admission-db53c7d5cc18f9540870eec4, outcomemerge-landing-outcome-d78f300c3693a8a1093ecc1a; exact landing confirmed. Primary checkout refreshed cleanly to that landing.