Repository navigation
fix(gcp): take the compute CUD term from the recommendation plan (experimental, opt-in) - #401
Conversation
The converter used params.Term (default 1yr) and ignored the root Commitment plan, so a 36-month recommendation could be bought as 12 months and vice versa. The root plan is now authoritative. A conflicting params.Term, a root with no plan and no term, or a malformed plan skips that recommendation (errBadPlan) without aborting the batch. Closes #291 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ixture Add a plan to the sdkRootCommitment fixture, return the canonical 1yr/3yr term for explicit params.Term too, and drop the unreachable second root lookup in termWithoutPlan. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The root Commitment plan payload shape is unverified against a live Recommender. Default keeps params.Term / 1yr; ExperimentalGCPPlanTerm enables the plan path, with docs and a log line marking it experimental. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Gate review at head Verdict: logic PASS, merge BLOCKED by CI lint. Blocker (required check
Also: main has moved again ( What I checked (fixture/mock evidence only, no live cloud call):
Local: GOTOOLCHAIN=go1.26.9, fresh clone at |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Gate re-run at head Delta since Verdict: BLOCKED. Required check The "Verify standalone provider modules" step (
Reproduced locally: Fix needed: make the gcp module build against a pkg version that contains the field. For example, land the |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Gate verdict at head
|
Supersedes #307 (same change, plus an experimental gate). Closes #291.
The GCP compute CUD term can be read from the recommendation's root Commitment
plan. The payload shape is unverified against a live Recommender and no GCP project is available to check it, so the path is EXPERIMENTAL and off by default.RecommendationParams.ExperimentalGCPPlanTerm(default false). Unset keeps the previous behaviour:params.Term, default "1yr", plan ignored, nothing skipped.resolveRecTerm,rootCommitmentTermanderrBadPlan; known issue updated.TestPlanTermOffByDefaultcovers the default.Fixture-based evidence only; no live cloud call. Follow-ups: platform pin bump and a setting to enable the flag; platform UI label for experimental terms.
🤖 Generated with Claude Code
Summary by CodeRabbit