- 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.