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
RC3-004 (P1, IN PROGRESS — AWS v1, see #75): Add compare_bom_regions — weighted, SKU-native BoM tool with regions[] fan-out #31
Citation: customer-feedback §1 ('The big one: weighted-BoM regional comparison')
Current behavior:
No such tool exists today. compare_bom's only region control is region_preference, a 3-value enum mapped to exactly one region per provider — no regions[] array, no baseline_region. estimate_bom has no top-level region concept at all. Neither can do what compare_prices already does for a single spec via Regions []string + BaselineRegion fan-out + applyBaselineDeltas.
Proposed fix:
New tool compare_bom_regions(items, regions[], baseline_region?, providers?), composed from existing machinery: reuse compare_prices' region fan-out/semaphore + applyBaselineDeltas pattern adapted to a regions[] × items[] loop; reuse estimate_bom's processBOMItems for open PricingSpec-dict line items; reuse get_price_by_sku's AWS SKU resolver for raw-SKU line items; reuse Attributes["fallback"] for coverage tagging. New work: the handler itself, a float-typed weight field, per-line-per-region source tagging (catalog|fallback|absent), coverage_pct, ranking/summary, and partial-result handling that never hard-errors on a missing baseline/line.
Dependencies: Blocking at CUR scale on RC3-016/RC3-015. Should incorporate RC3-005/RC3-006's fixes and RC3-002's reliability contract from day one.
DACI — why this is deferred, not auto-implemented:
Decision: This is a brand-new tool (L effort, new public API surface), not a scoped bug fix. Shipping a new subsystem straight to main autonomously — with no human review of the tool's contract before it becomes part of the server's public surface — is out of scope for the autonomous-merge lane of the RC3 campaign.
Alternatives: (a) Build v1 AWS-only, synchronous per-line calls, as the roadmap suggests as a fallback scope. (b) Wait for RC3-016 (batch SKU lookup) to land first so this tool doesn't need its own bespoke resolver. (c) Design the tool contract (input/output schema) as a separate proposal issue before any implementation.
Considerations: Depends on RC3-006 (fallback passthrough, landing autonomously — scoped half only) and RC3-005 (float weight, landing autonomously) for its input contract to be correct from day one. Should also incorporate RC3-032's canonical response shape once that's decided (also deferred, see RC3-032).
Impact if left undone: The customer's headline ask ("weighted-BoM regional comparison") stays unmet in RC3. This is the single most consequential deferral in this batch.
Who should decide: Repo owner — needs sign-off on the new tool's contract (schema, naming, whether AWS-only v1 is acceptable) before implementation starts.
Filed from the RC3 engineering roadmap (rc3-engineering-roadmap.md).
Decision: build v1 now — alternative (a) from this issue's own DACI (AWS-only, synchronous per-line calls). GCP/Azure line items resolve to `"source": "not_supported"` in v1 rather than guessed prices.
Design note (cross-provider extensibility analysis, why AWS-only v1 doesn't lock in an AWS-specific schema): #75 / `docs/plans/RC3-004-compare-bom-regions-design.md`.
Sequenced after #30/PR #74 (canonical `price_per_unit` field) so this tool's response uses that shape from day one instead of needing rework.
v1 shipped via #82 (AWS-only, PricingSpec-dict items; non-AWS reported under not_supported), merged as part of v1.2.0. Per docs/roadmap.md's scope decision, three sub-parts were deliberately deferred rather than dropped: raw-SKU line items (adapting LookupSKUAcrossRegions to many-items-one-region instead of one-item-many-regions is real integration work, not a drop-in), a providers? filter, and a weight field affecting ranking/totals — all three need repo-owner sign-off on semantics before implementation.
#75, the design note that had proposed the raw-SKU + providers? combination, was closed as superseded now that v1 shipped without it — so that follow-up design work is currently untracked. Leaving this issue open to represent the remaining (non-v1) scope; a fresh design note should replace #75's role if/when this is picked up.
Partial progress landed in #96 (merged to main: 3e3e7a7): raw-SKU line items for both estimate_bom and compare_bom_regions, v1 scope (AWS-only, synchronous per-region), per this issue's own DACI fallback option (a).
What shipped:
New tool compare_bom_regions(items, regions[], baseline_region?) — region fan-out + baseline-delta over estimate_bom's shared processBOMItems, reusing compare_prices' region-loop pattern. Non-AWS items reported once at the top level as not_supported.
Raw-SKU dict line items ({"sku": ..., "region": ..., "service"?/"operation"?/"product_family"?}) accepted by both estimate_bom and compare_bom_regions, resolved via get_price_by_sku's existing AWS SKU resolver.
Activity
x7even commentedon Jul 4, 2026
Decision: build v1 now — alternative (a) from this issue's own DACI (AWS-only, synchronous per-line calls). GCP/Azure line items resolve to `"source": "not_supported"` in v1 rather than guessed prices.
Design note (cross-provider extensibility analysis, why AWS-only v1 doesn't lock in an AWS-specific schema): #75 / `docs/plans/RC3-004-compare-bom-regions-design.md`.
Sequenced after #30/PR #74 (canonical `price_per_unit` field) so this tool's response uses that shape from day one instead of needing rework.
[-]RC3-004 (P1, DEFERRED): Add compare_bom_regions — weighted, SKU-native BoM tool with regions[] fan-out[/-][+]RC3-004 (P1, IN PROGRESS — AWS v1, see #75): Add compare_bom_regions — weighted, SKU-native BoM tool with regions[] fan-out[/+]docs(roadmap): correct RC3-004 rationale — RC3-016 already shipped
feat(tools): add compare_bom_regions AWS-only v1 (#31)
feat(tools): add compare_bom_regions AWS-only v1 (#31) (#82)
docs(roadmap): add RC3 triage scope-decisions section (#83)
x7even commentedon Jul 5, 2026
v1 shipped via #82 (AWS-only, PricingSpec-dict items; non-AWS reported under
not_supported), merged as part of v1.2.0. Perdocs/roadmap.md's scope decision, three sub-parts were deliberately deferred rather than dropped: raw-SKU line items (adaptingLookupSKUAcrossRegionsto many-items-one-region instead of one-item-many-regions is real integration work, not a drop-in), aproviders?filter, and aweightfield affecting ranking/totals — all three need repo-owner sign-off on semantics before implementation.#75, the design note that had proposed the raw-SKU +
providers?combination, was closed as superseded now that v1 shipped without it — so that follow-up design work is currently untracked. Leaving this issue open to represent the remaining (non-v1) scope; a fresh design note should replace #75's role if/when this is picked up.docs(roadmap): update RC3 scope-decision table to reflect merged PRs …
feat(bom): add raw-SKU line items to estimate_bom and compare_bom_reg…
x7even commentedon Jul 7, 2026
Partial progress landed in #96 (merged to main: 3e3e7a7): raw-SKU line items for both
estimate_bomandcompare_bom_regions, v1 scope (AWS-only, synchronous per-region), per this issue's own DACI fallback option (a).What shipped:
compare_bom_regions(items, regions[], baseline_region?)— region fan-out + baseline-delta overestimate_bom's sharedprocessBOMItems, reusingcompare_prices' region-loop pattern. Non-AWS items reported once at the top level asnot_supported.{"sku": ..., "region": ..., "service"?/"operation"?/"product_family"?}) accepted by bothestimate_bomandcompare_bom_regions, resolved viaget_price_by_sku's existing AWS SKU resolver.BOMAdvisories(egress/LB/NAT/RDS-backup/EBS-snapshot rows), matching PricingSpec-dict item behavior.What's still open (deferred, not in this PR):
weightfield per line item)providers[]filterLeaving this open to track the deferred scope above rather than closing.
feat(gcp): add raw-SKU lookup parity with AWS (RC3-015, #35) (#97)