You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(aws): stable-usage estimator to unlock the EC2 Instance SP base layer #31
From the LeanerCloud/cloud-commitments-cli#1340/#1347 design reviews: providers/aws/ladder.GetUsageBaseline deliberately returns StableUSDPerHour nil (no honest estimator), which makes the allocation engine route ALL core gap to the flex layer (Compute SPs). The base layer (EC2 Instance SPs, the highest-discount instrument) is therefore inert in v1 - safe, but leaves the Compute-SP-vs-EC2-Instance-SP discount delta unclaimed.
Build a real stable-usage estimator: e.g. per-family EC2 usage from CE GetSavingsPlansPurchaseRecommendation for the EC2Instance plan type (AWS already computes stable hourly commitment recommendations), or a family-level low-water percentile over instance-family usage. Output feeds UsageBaseline.StableUSDPerHour with documented semantics (post-buffer-fraction per the pkg/ladder contract).
Decision needed (one line): which estimator should feed StableUSDPerHour for the EC2 Instance SP base layer: a per-family Cost Explorer GetSavingsPlansPurchaseRecommendation for EC2_INSTANCE_SP, or a family-level low-water percentile? Today GetUsageBaseline (providers/aws/ladder/baseline.go ~:122-129) returns nil, so allocate.go routes all core gap to the flex layer. Either estimator must produce the post-buffer-fraction value the pkg/ladder contract requires. Safe default: keep nil (already fail-closed). Marking status/needs-info.
Activity
cristim commentedon Oct 17, 2026
Decision needed (one line): which estimator should feed StableUSDPerHour for the EC2 Instance SP base layer: a per-family Cost Explorer GetSavingsPlansPurchaseRecommendation for EC2_INSTANCE_SP, or a family-level low-water percentile? Today GetUsageBaseline (
providers/aws/ladder/baseline.go~:122-129) returns nil, so allocate.go routes all core gap to the flex layer. Either estimator must produce the post-buffer-fraction value the pkg/ladder contract requires. Safe default: keep nil (already fail-closed). Markingstatus/needs-info.