Conversation
An environment whose members are distinct targets plans each one against its own live schema, so the members are free to run different work. The plan comment said only that: "each target holds its own schema, so their plans are not expected to match". True of the contract, and silent about the round in front of the reviewer. Targets free to differ usually do not, and a fleet converging over several PRs — some targets changed, the rest already there — was invisible. The members are now grouped by the plan each would run, and the comment states the result: every target needs the same change, or how many of them are already at this schema, or how many distinct plans the apply would run. Members group on the plan fingerprint, so they share a group exactly when their plans are the same work. Each group carries the plan its own members would run, in the shape the comment already renders the reviewed plan in, so a later change can show it. Grouping is confined to a clean rollup of independent members. A blocked rollup still lists every member on its own, because the operator's next step is the target that could not be planned. Mirrored members stay ungrouped: a clean mirrored rollup has already proved they are one group, and re-reporting that in the vocabulary of a fleet free to diverge would read as an outcome rather than the requirement that let the check pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
aparajon
force-pushed
the
armand/multi-target-plan-groups
branch
from
September 17, 2026 18:07
2ea4fc3 to
bf36a87
Compare
aparajon
marked this pull request as ready for review
September 17, 2026 20:51
aparajon
requested review from
JashLal,
Kiran01bm,
eeSeeGee,
jayjanssen,
jemiahw and
morgo
as code owners
September 17, 2026 20:51
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.
An environment whose members are distinct targets plans each one against its own live schema, so the members are free to run different work. The plan comment said exactly that and nothing else:
That is true of the contract and silent about the round in front of the reviewer. Targets that are free to differ usually do not, and the shape a fleet rolling out over several PRs actually has — some targets changed, the rest already there — was invisible.
This groups the members by the plan each would run and says what came out.
What changes for the reader
A production fleet of three targets, where two still need the reviewed change and one already has it:
The wording, by case:
every target needs the same change.2 need this change, 1 is already at this schema.2 distinct plans. Each target applies its own.2 distinct plans across the 3 targets that change; 2 are already at this schema.every target is already at this schema.Divergence renders on the success glyph. Under a targets list, targets holding different schemas is the contract rather than a problem, so calling it out with the attention glyph would send an operator to reconcile a fleet that is behaving correctly.
Where grouping applies
Members group on the plan fingerprint, so they share a group exactly when their plans are the same work. Two cases deliberately stay ungrouped:
A group with no statements and no vschema rewrite is "already at this schema" — a plan in its own right, not a missing one. A plan that only rewrites the vschema runs no DDL and is still work, so it is not folded in with the targets that have nothing to do.
Each group carries its plan
A group holds the changes its own members would run, converted into the same shape the comment already renders the reviewed plan in, rather than a summary of it. A sharded namespace keeps both views of its changes and a satisfied shard stays visible, so the next change can render a group's plan through the code that renders the plan a reviewer has already read, instead of a second renderer that agrees until it does not.
Not in this change
The per-group DDL blocks. The comment states how many distinct plans there are but still renders the reviewed plan's DDL once, unattributed to a group. That change carries the preview fixtures for these renderings, so
TEMPLATES.mdshows the finished output rather than a half-rendered intermediate.Opened by Claude (Claude Opus 5).
🤖 Generated with Claude Code