LLPA adjustments + value sets + condition evaluator (Phase-2 Slice 4)

Featurekamo-shared-library
Shipped
June 26, 2026 at 6:32 PM UTC
Author
Kamo
Commit
5fcfdd9

The LLPA/adjustment layer + the deterministic predicate engine for §8.1 step-4 matching ("an adjustment matches iff ALL its conditions are satisfied"). - MlosPriceAdjustment (mlos_price_adjustment): rateSheetVersionId FK, productId (null=all), adjustmentGroup, operation (ADDITIVE|MULTIPLICATIVE), value, stackOrder, capValue, label. - MlosAdjustmentCondition (mlos_adjustment_condition): priceAdjustmentId FK, attribute, operator **************** numLow/numHigh, valueSetId FK. - MlosValueSet (mlos_value_set) + MlosValueSetMember (mlos_value_set_member): named categorical sets; the doc 02 §6.2 platform-owned exception (organizationId nullable + platformOwned flag on the SET only; member carries no orgId mirror — ownership via the set, no drift surface). - AdjustmentConditionEvaluator (ungated @Component) + ScenarioFacts: numeric ops vs num_low/high, set ops vs resolved members; missing fact → no match; SET OPS FAIL CLOSED on empty/null member set (a dangling soft-FK value set never silently matches everyone) and null-resolver-safe (no NPE). 9 **************** green. Adversarially reviewed (2-agent workflow): fixed 2 HIGH evaluator bugs (NOT_IN fail-open on empty set; NPE on null resolver) + dropped the redundant member orgId mirror per the review. Pricing numbers raw BigDecimal (Slice-3 correction). KamoInitializer adds the value-set ownership CHECK.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing