[Automated] Update kustomize CLI Options - #4558
Conversation
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (2)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Automated Review — PR #4558
Scope check: Confirmed via gh pr diff that this PR touches only 3 files: a new src/ModularPipelines.Kubernetes/Generated/Kustomize.Generation.json manifest, and updates to src/ModularPipelines.Kubernetes/PublicAPI.Shipped.txt / PublicAPI.Unshipped.txt. No .cs source files change. I cross-checked a large sample of the PublicAPI.*.txt entries against the current generated code at the PR's merge base and confirmed they already match — this baseline was stale before the PR, and this PR is a legitimate mechanical catch-up rather than a new source of drift.
Finding (process/communication risk, not a correctness bug)
Mislabeled scope hides a breaking API change to unrelated (kubectl) surface area.
- File:
src/ModularPipelines.Kubernetes/PublicAPI.Unshipped.txt/PublicAPI.Shipped.txt - What: The PR is titled/described purely as a "kustomize CLI options" update, and the only ignored generated file mentioned by CodeRabbit's own filter is
Kustomize.Generation.json. But becausePublicAPI.*.txtis scoped to the wholeModularPipelines.Kubernetesassembly rather than per-tool, this diff also formally documents a sizeable breaking change to ~22 kubectl service methods that have nothing to do with kustomize — e.g.IKubernetesRollout.PauseAsync/ResumeAsync/RestartAsync/StatusAsync/UndoAsync/HistoryAsync,IKubernetes.AnnotateAsync/AttachAsync/CordonAsync/CpAsync/DebugAsync/DrainAsync/ExecAsync/LabelAsync/LogsAsync/PortForwardAsync/TaintAsync/UncordonAsync,IKubernetesAuth.CanIAsync,IKubernetesConfig.SetAsync/SetClusterAsync/SetCredentialsAsync. These moveoptionsfrom optional-nullable-with-default (Options? options = null) to required non-nullable,DryRun/Cascadechange fromstring?to strongly-typed enums (KubernetesAnnotateDryRun,KubernetesApplyCascade, etc.), andKubernetesKubercSetPolicyenum members are renamed/recased (Allowall/Denyall→AllowAll/DenyAll). - Why it matters: A consumer calling e.g.
context.Tools.Kubernetes.Rollout.PauseAsync()with no arguments (relying on the previously-optional default) will fail to compile once this baseline lands — but nothing in the PR title, description, or the generation manifest signals that kubectl consumers are affected, since none of the changed methods are kustomize-related. - Suggested improvement: Either (a) split per-tool
PublicAPI.*.txtfiles (one per generated tool underModularPipelines.Kubernetes, similar to howGenerated/*.Generation.jsonis already per-tool) so a kustomize-only regeneration can't silently sweep in kubectl's breaking changes, or (b) have the automation that opens these PRs diff the previousPublicAPI.*.txtagainst the new one and flag/name every tool whose public surface actually changed in the PR body, so reviewers get an accurate breaking-change summary instead of relying on the (currently misleading) title.
No other issues found; the enum renames/recasing and parameter nullability changes that are in scope look like they correctly reflect the current generator/scraper output.
|
Addressed review's immediate communication risk: title/body now name assembly-wide Kubernetes baseline synchronization and enumerate kubectl consumer impact. Ubuntu failure is unrelated to this generated diff: Systemic per-tool PR-summary automation remains separate from this generated output PR; no generated files were hand-edited. |
|
Systemic automation follow-up filed: #4576 |
|
@claude The exact-head finding was addressed without changing generated files: the PR title and body now explicitly identify the assembly-wide Kubernetes/kubectl API baseline changes and migration impact, and issue #4576 implements systemic generated PR summaries. Please replace the stale BLOCKING verdict for exact head 2f55868. |
2f55868 to
577eeb7
Compare
There was a problem hiding this comment.
Automated Review — PR #4558 (re-review at head 577eeb71887fd6165f2fb768a56d1e5adb49041e)
Scope check: gh pr diff confirms this PR still touches only 3 files — the new src/ModularPipelines.Kubernetes/Generated/Kustomize.Generation.json manifest and updates to src/ModularPipelines.Kubernetes/PublicAPI.Shipped.txt / PublicAPI.Unshipped.txt. No hand-edited .cs files. The generated content itself (enum renames/recasing, DryRun/Cascade moving from string? to strongly-typed enums, constructor-nullability changes) looks like a correct, mechanical reflection of current generator/scraper output, consistent with this repo's policy that "current tool output is the sole source of truth for generated options, even when regeneration causes breaking API changes" (root CLAUDE.md).
Previously raised finding — still present on this head
In the last review (at former head 2f55868b52fd35be4fab2199b3207d7d281e7961), I flagged that this PR is titled/described as a kustomize-only update, but because PublicAPI.*.txt is scoped to the whole ModularPipelines.Kubernetes assembly, the diff also formally ships a breaking change to ~22 kubectl service methods unrelated to kustomize (e.g. IKubernetesRollout.PauseAsync/ResumeAsync/RestartAsync/StatusAsync/UndoAsync/HistoryAsync, IKubernetes.AnnotateAsync/AttachAsync/CordonAsync/CpAsync/DebugAsync/DrainAsync/ExecAsync/LabelAsync/LogsAsync/PortForwardAsync/TaintAsync/UncordonAsync, IKubernetesAuth.CanIAsync, IKubernetesConfig.SetAsync/SetClusterAsync/SetCredentialsAsync) — verified again on this diff, same set of removed/added PublicAPI lines is still present.
In the follow-up comments, you noted the title/body were updated to disclose this and asked me to re-review the corrected scope documentation. However, on the current head (577eeb71887fd6165f2fb768a56d1e5adb49041e, pushed after that comment), the live PR title/body are:
[Automated] Update kustomize CLI Options
"This PR contains automatically generated updates to kustomize CLI options classes... Command coverage report: kustomize (v5.8.1): 45 commands..."
i.e. it's back to the kustomize-only wording with no mention of the kubectl-surface breaking changes — the disclosure doesn't appear to have survived whatever regenerated/re-pushed this commit. This isn't a defect in the generated code (which is correct per the "sole source of truth" policy), just a gap between what was said was fixed and what's actually on this head.
Suggestion: Since manual edits to the PR body seem to get clobbered whenever the branch is regenerated/re-pushed, the durable fix is the systemic one already tracked in #4576 (having the automation itself diff PublicAPI.*.txt and name every affected tool in the generated body) rather than re-editing this PR's description by hand again, since that edit won't survive the next regeneration either. Until that lands, it'd still be worth a quick manual edit to this PR's title/body before merge so consumers relying on the affected kubectl methods aren't surprised.
No other issues found — the in-scope kustomize option changes and the mechanically-generated kubectl-surface changes both look like accurate reflections of current tool output.
There was a problem hiding this comment.
Automated Review — PR #4558 (head 529d2e82f4a2e32cb02d9ed54acd8ee7cfeb0cec)
Scope check: gh pr diff confirms this PR touches only 3 files: a new src/ModularPipelines.Kubernetes/Generated/Kustomize.Generation.json provenance manifest, and updates to PublicAPI.Shipped.txt / PublicAPI.Unshipped.txt. No hand-edited .cs files, consistent with the repo's policy that generated options are never hand-tweaked in a PR.
Previously raised finding — now resolved. Earlier reviews on this PR (at heads 2f55868b… and 577eeb71…) flagged that the title/body only mentioned kustomize while the whole-assembly PublicAPI.*.txt diff also silently shipped ~22 breaking kubectl surface changes. On the current head, the PR body explicitly calls this out under "Consumer impact" ("these baseline changes expose previously generated kubectl breaking API changes even though this refresh was triggered by kustomize... consumers using no-argument kubectl convenience calls or old string/casing forms must update"). That disclosure gap is fixed.
New finding: baseline-sync tooling produces orphaned *REMOVED* bookkeeping in PublicAPI.Unshipped.txt
- What: In this PR's diff, for every removed member the sync deletes the plain entry from
PublicAPI.Shipped.txtand, in the same commit, adds a*REMOVED*<same symbol>line toPublicAPI.Unshipped.txt(e.g.KubernetesAnnotateOptions.DryRun.get -> string?is deleted from Shipped.txt line 310 while*REMOVED*KubernetesAnnotateOptions.DryRun.get -> string?is added to Unshipped.txt — same pattern for 43 more entries:KubercSetPolicy.Allowall/Denyall, and constructors/DryRun/Cascadegetters across ~20 kubectl option types). - Why it's wrong: Under the standard Roslyn
PublicApiAnalyzersworkflow, a*REMOVED*marker inUnshipped.txtis meant to coexist with the still-present entry inShipped.txt— the pairing only gets collapsed (entry stripped from Shipped, marker cleared from Unshipped) by an actual "ship" step when a release goes out. Here the sync deletes the Shipped.txt entry itself instead of leaving that to the ship step, so the freshly-added*REMOVED*marker has nothing left to refer to from the moment it's committed. This isn't hypothetical: I checked the full current file, and of all ~202*REMOVED*lines now inPublicAPI.Unshipped.txt, zero correspond to a still-present entry inShipped.txt. - Pre-existing, not new to this PR: I traced this back with
git log/git show— the pattern was already baked into the very commit that created both files (d8f2344d, #4470), so this PR's automated sync is mechanically continuing an already-broken convention rather than introducing a new bug. This PR does make it worse (44 more dead entries added on top of the ~158 already there), and since every future tool refresh will keep compounding it, it's worth fixing at the source rather than accepting indefinitely. - Suggested fix: Per this repo's own policy ("fix generated-options problems in the scraper or generator, not in generated output"), the fix belongs in whatever script performs the baseline sync (not in this PR's generated files): either (a) stop deleting entries from
Shipped.txtdirectly and only add*REMOVED*markers toUnshipped.txt, leavingShipped.txtalone until an actual release "ships" and reconciles the two files, or (b) if the repo doesn't use the ship/unshipped release lifecycle at all and instead treatsShipped.txtas a rolling "current state" snapshot, then drop the*REMOVED*bookkeeping inUnshipped.txtentirely and rely solely on the Shipped.txt diff — carrying both mechanisms at once is what produces entries that can never be reconciled by tooling.
No other issues found — the in-scope kustomize changes and the kubectl-surface changes both look like accurate reflections of current generator/scraper output, and a scoped build of ModularPipelines.Kubernetes.slnx succeeds.
|
The current BLOCKING finding is based on the opposite of Microsoft.CodeAnalysis.PublicApiAnalyzers 5.6.0's documented removal contract. Its bundled RS0017 documentation says: when removing a public type or member, put that entry in PublicAPI.Unshipped.txt with the REMOVED prefix. The repository's sync tests intentionally encode exactly that transition: remove Api.Removed from Shipped and add REMOVEDApi.Removed to Unshipped (Test-SyncPublicApiBaselines.ps1), including idempotency coverage in Test-MergePublicApiBaselineSnapshot.ps1. Both scripts pass on the current head. Keeping the original entry in Shipped would leave a declaration for an API that no longer exists and continue producing RS0017. No code change is appropriate here. @claude please reassess the current head against the analyzer's documented semantics and repository tests. |
|
Re-assessed the outstanding finding against the documented Per this repo's policy the fix belongs in @claude please re-review this exact head with #4638 as the disposition for the sync-tooling finding. |
Automated Review — PR #4558 (re-review at head
|
|
Synced current |
Code reviewReviewed at head Independently verified scope: Content check: The new file's shape ( No issues found. This is a clean, mechanically-generated, single-file provenance update. |
|
The orphaned |
|
The fast-fail lane on the synced head failed in |
8c1860b to
d65489a
Compare
ReviewThis is a minimal, well-scoped automated update to the kustomize CLI options generator output. I independently verified the exact HEAD (
No hand-edits to generated output are present (consistent with the project's rule that generated options must only change via the scraper/generator), no public API surface changes, and no logic changes to review for correctness bugs. I found no actionable issues — this is a safe, low-risk PR reflecting the current state of the CLI's help text. |
d65489a to
6023e7c
Compare
Automated Review — PR #4558 (head
|
6023e7c to
f074b57
Compare
Code reviewReviewed at head Scope check:
History check: This PR previously went through several rounds where the whole-assembly No hand-edits to generated output, consistent with this repo's policy that generated options are the sole source of truth and must only change via the scraper/generator. No actionable findings on this head. |
Summary
This PR contains automatically generated updates to kustomize CLI options classes.
The generator scraped the latest CLI help output from the installed tool.
Changes
Assembly-wide public API impact
No active public API changes were detected in this assembly.
Command coverage
Command coverage report:
Verification
🤖 Generated with ModularPipelines.OptionsGenerator